recorrer - ¿Cuál es la ventaja de usar Heredoc en PHP?
recorrer string php (5)
Algunos IDEs encienden automáticamente el código en las cadenas heredoc, lo que hace que el uso de heredoc para xml o html sea visualmente atractivo.
Personalmente, me gusta para partes más largas de ie XML, ya que no me tiene que importar citar caracteres de comillas y simplemente puedo pegar el XML.
¿Cuál es la ventaja de usar Heredoc en PHP, y puedes mostrar un ejemplo?
En primer lugar, todas las razones son subjetivas.
Es más como una cuestión de gusto que de razón.
Personalmente, encuentro heredoc bastante inútil, y uso de vez en cuando, la mayoría de las veces cuando necesito obtener algo de HTML en una variable y no quiero molestarme con el buffering de salida, para formar un mensaje de correo electrónico HTML, por ejemplo.
El formateo no se ajusta a las reglas generales de indentación, pero no creo que sea un gran problema.
//some code at it''s proper level
$this->body = <<<HERE
heredoc text sticks to the left border
but it seems OK to me.
HERE;
$this->title = "Feedback";
//and so on
En cuanto a los ejemplos en la respuesta aceptada, es meramente un engaño.
Ejemplos de cadenas, de hecho, son más concisas si uno no los engaña
$sql = "SELECT * FROM $tablename
WHERE id in [$order_ids_list]
AND product_name = ''widgets''";
$x = ''The point of the "argument" was to illustrate the use of here documents'';
La sintaxis de doc aquí es mucho más clara para mí y es realmente útil para cadenas de múltiples líneas y evitar problemas de cotización. De vuelta en el día que solía usarlos para construir consultas SQL:
$sql = <<<SQL
select *
from $tablename
where id in [$order_ids_list]
and product_name = "widgets"
SQL;
Para mí, esto tiene una menor probabilidad de introducir un error de sintaxis que el uso de comillas:
$sql = "
select *
from $tablename
where id in [$order_ids_list]
and product_name = /"widgets/"
";
Otro punto es evitar el escape de comillas dobles en su cadena:
$x = "The point of the /"argument" was to illustrate the use of here documents";
El problema con lo anterior es el error de sintaxis (la comilla escapada faltante) Acabo de introducir en oposición a la sintaxis del documento aquí:
$x = <<<EOF
The point of the "argument" was to illustrate the use of here documents
EOF;
Es un poco de estilo, pero utilizo las siguientes reglas para documentos únicos, dobles y aquí para definir cadenas:
- Las comillas simples se utilizan cuando la cadena es una constante como
''no variables here''
- Comillas dobles cuando puedo poner la cadena en una sola línea y necesito interpolación variable o una comilla simple incrustada
"Today is ${user}''s birthday"
- Aquí documentos para cadenas de varias líneas que requieren formateo e interpolación variable.
Los Heredoc son una gran alternativa a las cadenas entrecomilladas debido a una mayor legibilidad y facilidad de mantenimiento. No tiene que escapar de las comillas y (bueno) IDE o editores de texto usarán el resaltado de sintaxis adecuado.
Un ejemplo MUY común: hacer eco de HTML desde PHP:
$html = <<<HTML
<div class=''something''>
<ul class=''mylist''>
<li>$something</li>
<li>$whatever</li>
<li>$testing123</li>
</ul>
</div>
HTML;
// sometime later
echo $html;
Fácil de leer. Facil de mantener.
La alternativa es hacer eco de las cadenas entrecomilladas, que terminan conteniendo citas escapadas e IDE no van a resaltar la sintaxis para ese idioma, lo que conduce a una mala legibilidad y más dificultad en el mantenimiento.
Respuesta actualizada para su sentido común
Por supuesto, no le gustaría ver una consulta SQL resaltada como HTML. Para usar otros idiomas, simplemente cambie el idioma en la sintaxis:
$sql = <<<SQL
SELECT * FROM table
SQL;
No sé si diría que aquí está la pereza, se puede decir que hacer cualquier cosa es pereza, ya que siempre hay formas más engorrosas de hacer cualquier cosa.
Por ejemplo, en determinadas situaciones, es posible que desee generar texto, con variables incrustadas, sin tener que recuperar un archivo y ejecutar una plantilla de reemplazo. Heredoc le permite renunciar a tener que escapar de las comillas, de modo que el texto que ve es el texto que genera. Claramente hay algunos aspectos negativos, por ejemplo, no se puede aplicar sangría a su heredoc, y eso puede ser frustrante en ciertas situaciones, especialmente si es un seguidor de la sintaxis unificada, lo cual soy.