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