Der Martin: Alternative Syntax für Kontrollstrukturen

Beitrag lesen

Hi,

{ … } ist in PHP ein Block. Bei { ?> foo <?php } hat man aber keinen PHP-Block mehr.
wirklich nicht?
Wirklich nicht. Wie kann Code, der durch ?> abbrochen, durch HTML-Code unterbrochen, dann durch <?php wieder aufgenommen wird, denn _ein_ PHP-Block sein?

weil PHP nicht so arbeitet. Wenn du den PHP-Modus mit ?>some html<?php unterbrichst, ist das für den PHP-Parser gleichbedeutend mit einer langen echo-Anweisung oder einer Heredoc-Notation (abgesehen von der Variablen-Ersetzung). Das sind nur unterschiedliche Arten, um letztendlich doch das Gleiche zu notieren.

Der PHP-Parser arbeitet nämlich nicht blockweise (im Sinn von <?php ... ?>), sondern parst und analysiert das gesamte Dokument als Einheit.

Ein in einem PHP-Abschnitt begonnener und in einem späteren PHP-Abschnitt beendeter Block bleibt daher aus der Sicht von PHP ein Block. Das dazwischen notierte Markup ist als direkt ausgegebener String Teil dieses Blocks.

Ciao,
 Martin

--
Niemand lebt allein von seinen Träumen.
Aber wer träumt, lebt noch.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(