Nota: Ho condensato questo articolo nella mia persona wiki: http://wiki.chacha102.com/Lambda - Godetevifunzioni lambda in PHP non sono logiche
Sto avendo alcuni problemi con funzioni di stile Lambda in PHP.
In primo luogo, questo funziona:
$foo = function(){ echo "bar"; };
$foo();
In secondo luogo, questo funziona:
class Bar{
public function foo(){
echo "Bar";
}
In terzo luogo, questo funziona:
$foo = new stdClass;
$foo->bar = function(){ echo "bar"; };
$test = $foo->bar;
$test();
Ma, questo non funziona:
$foo = new stdClass;
$foo->bar = function(){ echo "bar"; };
$foo->bar();
E, questo non funziona
class Bar{
public function foo(){
echo "Bar";
}
$foo = new Bar;
$foo->foo = function(){ echo "foo"; };
$foo->foo(); // echo's bar instead of Foo.
la mia domanda è Perché?, e come posso assicurare che sia questo:
$foo->bar = function(){ echo "test"; };
$foo->bar();
e questo
$foo = new Bar;
$foo->bar();
sono chiamati in modo corretto? Punti extra se è possibile indicare la documentazione indicando perché si verifica questo problema.
Questo insieme ad altri commenti mi permette di impostare una classe 'stdObj' che posso usare per creare in modo affidabile un oggetto senza una classe (tipo di). Grazie! –