• Funktionen müssen nicht definiert werden, bevor man sie verwendet, außer sie sind bedingt definiert. Die "Bedingung" kann auch darin bestehen, daß die Funktion innerhalb einer anderen Funktion definiert wird; die äußere Funktion muß dann erst ausgeführt werden bevor die innere aufgerufen werden kann. Dies steht auch in der Doku.
  • Funktionen, die direkt in einer Klasse definiert werden, werden Methoden. Funktionen, die in Methoden definiert werden, werden globale Funktionen, sobald die Methode aufgerufen wird. Funktionen, die in Funktionen in Methoden definiert werden, werden globale Funktionen, sobald die äußere Funktion ausgeführt wird, wozu zunächst natürlich die Methode ausgeführt werden muß:
    class Klasse { function aussen() { function mitte() { function innen() { } } } function foo() { // aussen(); // Call to undefined function // $this->mitte(); // Call to undefined method } } $instanz = new Klasse; // $instanz->foo(); // s.o. // mitte(); // -> Call to undefined function // innen(); // -> Call to undefined function $instanz->aussen(); // innen(); // -> Call to undefined function mitte(); innen();

  • Statische Variablen in Methoden sind global (also instanzübergreifend) statisch. Statische Variablen in globalen Funktionen sind natürlich sowieso global statisch, auch wenn die Funktionen in einer anderen Funktion definiert wurde.