Nota: He condensado este artículo en mi persona wiki: http://wiki.chacha102.com/Lambda - Disfrutefunciones lambda en PHP no son lógicas
que estoy teniendo con funciones de estilo Lambda en PHP con algunas dificultades.
En primer lugar, esto funciona:
$foo = function(){ echo "bar"; };
$foo();
En segundo lugar, esto funciona:
class Bar{
public function foo(){
echo "Bar";
}
En tercer lugar, esto funciona:
$foo = new stdClass;
$foo->bar = function(){ echo "bar"; };
$test = $foo->bar;
$test();
embargo, esto no funciona:
$foo = new stdClass;
$foo->bar = function(){ echo "bar"; };
$foo->bar();
Y, esto no funciona
class Bar{
public function foo(){
echo "Bar";
}
$foo = new Bar;
$foo->foo = function(){ echo "foo"; };
$foo->foo(); // echo's bar instead of Foo.
Mi pregunta es ¿Por qué?, y cómo puedo asegurar que tanto esto:
$foo->bar = function(){ echo "test"; };
$foo->bar();
y esto
$foo = new Bar;
$foo->bar();
son llamados correctamente? Puntos extra si puede señalar documentación que indique por qué ocurre este problema.
Esto junto con otros comentarios me permiten configurar una clase 'stdObj' que pueda usar para crear de manera confiable un objeto sin una clase (tipo de). ¡Gracias! –