可能重复:
redirecting to other methods when calling non-existing methods
我有一个代码,我正在检查并获得了很棒的功能。
php 5.4.0 / Kohana 3.0.3
确切地说字符串有麻烦:
$ticket = ORM::factory('ticket');
$this->template->errors = $ticket->validate()->errors('validate_ticket');
问题是类Model_Ticket及其所有父类不包含方法validate(),但此方法返回有效值。 怎么可能呢?
下一个代码显示:
echo 'get_class($ticket)='; echo get_class($ticket); echo "\n";
echo "var_dump(method_exists(\$ticket,'validate'))="; var_dump(method_exists($ticket,'validate')); echo '\n';
echo "var_dump(method_exists('Model_Ticket','validate'))=";var_dump(method_exists('Model_Ticket','validate'));echo '\n'
echo 'get_class($ticket->validate())=';echo get_class($ticket->validate());
这是我们得到的结果:
get_class($ticket)=Model_Ticket
var_dump(method_exists($ticket,'validate'))=bool(false)
var_dump(method_exists('Model_Ticket','validate'))=bool(false)
get_class($ticket->validate())=Validate
get_class_methods($ ticket)也显示,$ ticket不包含方法validate()......
答案 0 :(得分:0)
Model
类父类没有validate()
方法。
由于Kohana DOCS我们尝试调用validate
方法(elseif ($method === 'validate')
)时会调用受保护的_validate
方法。