2

重複の可能性:
存在しないメソッドを呼び出すときに他のメソッドにリダイレクトする

私は検査しているコードを持っており、素晴らしい機能を持っています。

PHP 5.4.0/コハナ 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() が含まれていないことも示しています...

4

1 に答える 1

0

Modelクラスの親クラスにはメソッドがありませんvalidate()

Kohana DOCSにより、validateメソッド( )を呼び出そうとすると、elseif ($method === 'validate')保護された_validateメソッドが呼び出されます。

于 2012-10-02T06:38:50.170 に答える