Mailinglisten-Archive |
Am 17.03.2007 um 11:55 schrieb Lutz Zetzsche:
> Richtig soweit? :-)
Erm... bei meiner Erklärung ging's eher darum, warum foo(&
$undefined_var) keine Notice wirft. Sonst ist's relativ einfach: Es
kann nur auf Ebene der Engine geprüft werden, ob eine Variable
existiert oder nicht, ohne dass es eine Notice beim Variablenzugriff
gibt. Darum brauchen wir isset() und empty().
> Wenn PHP innerhalb von isset vor der Evaluierung schon automatisch
> einen
> Eintrag in die Symboltabelle macht, wie kann die Funktion dann noch
> herausfinden, daß die Variable vielleicht nicht existiert? Wo merkt
> sich PHP das, daß es den Eintrag in die Symboltabelle erst innerhalb
> von isset gemacht hat? Bzw. wie Symboltabelle aus? Steht da vielleicht
> drin, "wer" wann den Eintrag gemacht hat?
isset() macht keinen Eintrag in die Symboltabelle, sondern foo(&
$undefined_var).
$ php -r 'error_reporting(E_ALL); function foo(&$undef) { var_dump
(isset($undef)); } foo($bar); '
bool(false)
$ php -r 'error_reporting(E_ALL); function foo($undef) { var_dump
(isset($undef)); } foo($bar); '
Notice: Undefined variable: bar in Command line code on line 1
bool(false)
Gruss,
Andreas
php::bar PHP Wiki - Listenarchive