Meine Herren!
Hello Nüsseknacker,
dieser Thread wird für mich erst dann zuende sein, wenn mir jemand nachweist, warum ich die anonyme Funktion nebst "use" hier nicht einsetzen durfte!
Ich möchte keine "Alternativlösungen", sondern den Nachweis, dass meine Idee hier Schrott war!
Dann lass uns doch mal zusammen Programmieren, Fehlermeldungen auswerten und debuggen.
$foo = "bar";
function outer () {
$inner = function () use ( $foo ) {
};
}
Ergibt:
Notice: Undefined variable: foo in /in/U8sUa on line 8
#0 outer(), called at [/in/U8sUa:13]
#0 at [/in/U8sUa:8]\n #1 outer(), called at [/in/U8sUa:13]
NULL
Aha $foo ist nicht bekannt.
Okay vielleicht müssen wir $foo ja auch der äußeren Funktion bekannt machen:
<?php
$foo = "bar";
function outer () use ( $foo ) {
$inner = function () use ( $foo ) {
var_dump( $foo );
};
$inner();
}
outer();
?>
Ergibt:
Fatal error: syntax error, unexpected T_USE, expecting ';' or '{' in /in/9HWQj on line 4
#0 at [/in/9HWQj:4]
Ah moment. Das use-Keyword gibt es nicht für Funktionsausdrücke, aber für anonyme Funktionen schon.
<?php
$foo = "bar";
$outer = function () use ( $foo ) {
$inner = function () use ( $foo ) {
var_dump( $foo );
};
$inner();
};
$outer();
?>
string(3) "bar"
Tadaa!
Wieso muss man dir eigentlich noch erklären, wir sukzessives Debuggen funktioniert? Du hast doch genug Erfahrung ;)
--
“All right, then, I'll go to hell.” – Huck Finn
“All right, then, I'll go to hell.” – Huck Finn