validar trabajar simples para funciones dobles dentro con comillas caracteres cadenas analizar agregar php heredoc nowdoc

trabajar - Ventajas/inconvenientes de heredoc vs nowdoc en php



php trabajar con cadenas (3)

Como novato, se me recomendó usar preferentemente heredoc en comparación con demasiados códigos anidados (consulte T_ELSE inesperado en código php ).

Pero no logro entender si hay una diferencia significativa entre heredoc y nowdoc.

¿Cuáles serían las ventajas para heredoc y nowdoc en comparación con las otras que serían importantes para que un novato las entienda (es decir, que no sean ventajas muy pequeñas, pero que para mí sean importantes de entender).


Nowdocs son para cadenas de comillas simples lo que heredocs son para cadenas de comillas dobles. Un nowdoc se especifica de manera similar a un heredoc, pero no se realiza un análisis dentro de un nowdoc. La construcción es ideal para incrustar código PHP u otros bloques de texto grandes sin la necesidad de escapar.

http://php.net/manual/en/language.types.string.php#language.types.string.syntax.nowdoc

En otras palabras:

$foo = ''bar''; $here = <<<HERE I''m here , $foo ! HERE; $now = <<<''NOW'' I''m now , $foo ! NOW;

$here es "¡Estoy aquí, bar!" , mientras que $now es "Estoy ahora, $ foo!" .

Si no necesita una interpolación de variables pero necesita caracteres especiales como $ dentro de su cadena, los Nowdocs son más fáciles de usar. Eso es todo.


Nowdoc es excelente cuando no desea tratar con comillas y sin poner en cadena cadenas complejas, ya que no interpretará ninguna cita y no aceptará variables. Como tal, ¡es muy adecuado para mostrar manualmente fragmentos de código reales!

Sin embargo, si está utilizando una mezcla de heredocs y nowdocs para bloques de contenido de cadena, que es una tentación fácil de caer, podría fácilmente encontrarse con problemas de XSS (secuencias de comandos de sitios cruzados) donde quiera que use heredoc. Como tal, este enfoque no es lo suficientemente limpio como para recomendarlo a un desarrollador que comienza en php. En su lugar, debe intentar usar plantillas (de cualquier tipo, o el motor de plantillas que desee) para estos grandes bloques de información. Después de todo, no desea que html esté en su php y, por cierto, no quiere que el javascript sea inyectado por el usuario, como:

$username = ''<script>alert(document.cookie.toString())</script>''; $insecure_example = <<<HERE I really like having my site exploited, $username HERE;

Por lo tanto, no utilice HEREDOCS y NOWDOCS en lugar de un enfoque de plantillas adecuado o un motor de plantillas.


heredocs
1. El texto heredocs se comporta como una cadena entre comillas dobles, sin las comillas dobles.
2. Las citas en un heredoc no necesitan ser escapadas, pero los códigos de escape / n linefeed,
/ r retorno de carro, / t pestaña horizontal, / v pestaña vertical, / e escape, / f form feed, / backslash, / $ signo de dólar, / " todavía se pueden usar comillas dobles . Las variables se expanden, pero el mismo cuidado debe tomarse cuando se expresan variables complejas dentro de un heredoc como con cadenas.

Ejemplo:

$myname=''Tikku''; $heredoc_exmaple= <<<HEREDOC //n ,//r ,/t ,/r ,//v ,//e ,/f ,// , / ,$89 ,$ , $myname , '' , /$myname , /" ,/' HEREDOC; echo $heredoc_exmaple; //OUTPUT /n ,/r , , ,/v ,/e , ,/ , / ,$89 ,$ , Tikku , '' , $myname , /" ,/'

nowdocs
1. El texto de nowdocs se comporta como una cadena entre comillas simples, sin las comillas simples.
2. Las citas en un nowdocs no necesitan ser escapadas. Las variables no se expanden en él. La ventaja de nowdocs es incrustar el código PHP y los códigos de escape sin la necesidad de escapar.

Ejemplo:

$myname=''Tikku''; $nowdoc_exmaple= <<<''NOWDOC'' //n ,//r ,/t ,/r ,//v ,//e ,/f ,// , / ,$89 ,$ , $myname , '' , /$myname , /" ,/' NOWDOC; echo $nowdoc_exmaple; //OUTPUT //n ,//r ,/t ,/r ,//v ,//e ,/f ,// , / ,$89 ,$ , $myname , '' , /$myname , /" ,/'

Sintaxis : un nowdoc se identifica con la misma secuencia <<< utilizada para heredocs, pero el identificador que sigue se incluye entre comillas simples, por ejemplo, <<< ''NOWDOC''. Todas las reglas para los identificadores heredoc también se aplican a los identificadores nowdoc, especialmente aquellos relacionados con la apariencia del identificador de cierre.