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:(