Moin!
Wäre also so wie:
<?php
$a =1
?>
<!-- Unterbrochen und somit HTML BEREICH -->
<?php
$b=2
?>Damit sind aber einige PHP-Schulweisheiten zu diesem Thema ad acta.
- Code immer innerhalb von php-tags
Wieso dies? Daran ändert sich doch nichts, nur weil das schließende PHP-Tag optional ist und alternativ das Dateiende gilt.
- Beim includen wird die Datei genau an der Stelle so eingesetzt wo sie aufgerufen wurde als wenn man sie direkt dort reinschreibt.
Das war noch nie so. Beweis: Man kann include/require nicht an jeder beliebigen Stelle einer Datei platzieren. Versuch das beispielsweise mal innerhalb einer Klassendefinition:
class myClass {
include_once('klassen_konstanten.php');
public function blah() {}
}
Wird nicht funktionieren.
include/require eröffnet vielmehr eine Art Subroutinenaufruf, dessen Code in der einzubindenden Datei steht, und dessen "Auswirkungen" beispielsweise in Form von neu deklarierten Funktionen, Klassen, Variablen etc. dann auch wieder im Hauptskript verfügbar sind.
Außerdem kann die eingebundene Datei sogar einen Rückgabewert an die einbindende Datei liefern. Siehe return. Der Rückgabewert wird dann als Funktionsergebnis von include/require im aufrufenden Skript verfügbar sein. Allerdings ist diese Vorgehensweise nicht unbedingt ein guter Ersatz für die Verwendung von Funktionen - nur falls du jetzt auf Ideen kommst... :)
Und was daran nicht ganz logisch ist, wenn die bildliche Darstellung der Unterbrechung richtig ist: Was wenn innerhalb einer Funktion etwas included wird. Das Beispiel oben kann man ja auch so trennen, aber eine Funktion kann man ja nicht mittendrin unterbrechen. PHP kann es offensichtlich, warum auch immer das Sinn machen soll.
Innerhalb einer Funktion darf include/require vorkommen. Und wenn die Funktion aufgerufen wird, wird das Inkludieren durchgeführt. Wenn nicht, dann nicht.
»» »» ...Keine Programmiersprache kann doch allen Ernstes empfehlen ...
»»
»» Stimmt so ja auch nicht. Es wird empfohlen,....»»Habe doch auch empfohlen geschrieben.
Naja, die Programmiersprache empfiehlt es ja auch nicht, sondern die Zend Coding Standards. Nun ja, da Zend einer der Hauptbeteiligten an PHP ist, hat das natürlich ein gewisses Gewicht, aber es gibt noch ausreichend viele andere Coding-Standards, die in der PHP-Welt ebenfalls verwendet werden - daran sollte man sich jetzt nicht aufhängen.
Ich erwähnte ja schon: Dein Ursprungsproblem ist das Leerzeichen an der falschen Stelle, nicht das schließende Tag. Coding Standards dienen auch nicht unbedingt dazu, der Programmiersprache leichteres Skriptparsing zu erlauben, sondern in erster Linie sollen sie das Programmieren erleichtern und den Quellcode lesbar machen.
»» Die Coding-Standards von Zend fordern das beispielsweise sogar explizit
Inwieweit könnte diese "Forderung" von Zend dem normalen PHP-Programmierer mal Probleme machen? Denn ich habe noch nie ein Includefile gesehen, mit einem offenen Tag.
Wenn du gegen die Zend Coding Standards verstößt, wird man vermutlich deinen Quellcode niemals als Contribution zum Zend Framework akzeptieren, denn da sind diese Coding Standards verpflichtend. Gleiches gilt natürlich auch für andere Projekte, die dieselben oder - in diesem Punkt identische - andere Standards vorschreiben, deren Einhaltung bei Beiträgen zu dem Projekt verpflichtend ist.
- Sven Rautenberg