Hallo Tom,
Nö, nicht dass ich wüsste. Das wäre ja schlimm, wenn eine Variable "initialisiert" wird, nur weil man darauf (lesend) zugreift. Kannst Du ja auch ganz einfach ausprobieren, indem du das Konstrukt einfach mehrmals in den Source schreibst. Wenn Du dann für jedes Vorkommen eine Notice kassierst, ist auch nix initialisiert worden...
Du hast Recht.
<?php
error_reporting(E_ALL);
class foo {
function bar() {
$this->test;
echo $this->test;
}
}
$myFoo = new foo();
$myFoo->bar();
?>
Der Aufruf der Datei erzeugt ohne error_reporting(E_ALL) keine Ausgabe, mit gibt es jedoch zwei Notices aus - beide Male, weil die Variable undefiniert ist.
Ersetzt man die Zeile mit
$this->test;
jedoch durch
$this->test = "bar\n";
so gibt es auch keine Notices - weil er dann die Variable anlegt.
Da sieht man halt doch wieder, dass die Vorschriften von PHP etwas lax sind. Da ich PHP 4 verwende, würde ich aber doch gerne wissen, ob der Code oben (inklusive Zuweisung von "bar\n") in PHP 5 genausowenig Warnungen ausgibt.
Grüße
Marc Reichelt || http://www.marcreichelt.de/
Linux is like a wigwam - no windows, no gates and an Apache inside!
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
http://emmanuel.dammerer.at/selfcode.html