Примечание. Я сконструировал эту статью в своей персоне wiki: http://wiki.chacha102.com/Lambda - Наслаждайтесь
У меня возникают проблемы с функциями стиля Lambda в PHP.
Во-первых, This Works:
$foo = function(){ echo "bar"; };
$foo();
Во-вторых, This Works:
class Bar{
public function foo(){
echo "Bar";
}
В-третьих, это работает:
$foo = new stdClass;
$foo->bar = function(){ echo "bar"; };
$test = $foo->bar;
$test();
Но это не работает:
$foo = new stdClass;
$foo->bar = function(){ echo "bar"; };
$foo->bar();
И это не работает
class Bar{
public function foo(){
echo "Bar";
}
$foo = new Bar;
$foo->foo = function(){ echo "foo"; };
$foo->foo(); // echo bar instead of Foo.
Мой вопрос Почему?, и как я могу заверить, что оба этого:
$foo->bar = function(){ echo "test"; };
$foo->bar();
и этот
$foo = new Bar;
$foo->bar();
называются правильно? Дополнительные баллы, если вы можете указать документацию о том, почему эта проблема возникает.