<?php
$text = 'Hoi ik ben Ozzie PHP en ik typ een lange tekst en ';
$text .= 'daarom ga ik maar op de volgende regel verder. Anders ';
$text .= 'wordt het een hele brede zin.';
?>
in plaats van dit:
<?php
$text = 'Hoi ik ben Ozzie PHP en ik typ een lange tekst en '
. 'daarom ga ik maar op de volgende regel verder. Anders '
. 'wordt het een hele brede zin.';
?>
Heeft een van beide manieren de voorkeur? Zit er een of ander verschil in?
Waarom niet met heredoc?
<?php
$text = <<<EOT
Hoi ik ben Willem vp en ik typ een lange tekst voor Ozzie PHP
in omdat ik niets beters te doen heb. En om te voorkomen dat
Chris NVT horizontaal moet scrollen, doe ik het via heredoc.
EOT;
?>
Maar om terug te komen op je oorspronkelijke vraag: ik denk dat de laatste methode die je noemt iets efficiënter is. Die bevat namelijk 1 assignment en 2 concatenations. Het eerste voorbeeld bevat 3 assignments en 2 concatenations. Daar komt bij dat $text 3x geresolved moet worden in plaats van 1x. In de praktijk zal dat echter zo snel gaan dat je dat niet merkt. Ook hier geldt dus weer het aloude adagium: doe dat wat je het best leesbaar / duidelijkst vindt.
Een heredoc is handig als je grote lappen tekst moet echo'en of in een variabele zetten. Denk aan grote stukken HTML of SQL-queries. In PHP gebruik ik ze niet zoveel, maar dat komt voornamelijk omdat ik weinig in PHP doe. In Perl gebruik ik ze aan de lopende band. Een van de dingen die het handig maakt, is dat je allerlei soorten quotes kunt gebruiken zonder dat je die hoeft te escapen:
<?php
echo <<<EOT
<a href="/$url" onmouseover="function('klik');">klik hier</a>
EOT;
?>
Overigens kent PHP ook een nowdoc; daarbij worden variabelen niet geëxpandeerd. Eigenlijk hetzelfde als het verschil tussen enkele en dubbele quotes.
<?php
echo <<<'EOT'
Hier komt gewoon $url te staan en niet de waarde van $url. Daardoor kun je
bijvoorbeeld eenvoudig stukken PHP-code echo'en.
EOT
?>
Ik gebruik hier EOT (end of text) als delimiter, maar je kunt in principe elke string gebruiken. Voorwaarde is wel dat de afsluitende delimiter helemaal aan het begin van de regel moet staan.