Я нахожу это действительно странным. Может ли кто-нибудь дать объяснение?
abstract class UIController{
public static function exec($context,$vdo){
return call_user_func(array($context, $vdo));
}
}
class UIControllerSettings extends UIController{
protected function save(){
return "saved\n";
}
}
$controller = new UIControllerSettings();
echo UIController::exec($controller, 'save'); //<-- prints "saved"
echo $controller->save(); // <-- throws a fatal error
Не уверен, что это имеет смысл;не должны ли оба вызова привести к фатальной ошибке ??
Заранее спасибо.
Обновление:
Вот вывод:
$ php --version
PHP 5.3.3-1ubuntu9.5 with Suhosin-Patch (cli) (built: May 3 2011 00:48:48)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
$ php test.php
saved
PHP Fatal error: Call to protected method UIControllerSettings::save() from context '' in test.php on line 17