2017-09-29 19 views
0

チェックメソッドコレクターが必要です。私はfunction collector()を実行します。実行されます。しかし、私はこの機能が見えません。存在しないメソッドがオブジェクトで呼び出されるクラス内の検索方法

class Query { 


    public function Ands ($ands) { 
     ... 
    } 

    public function __call($str, $by) { 

    } 

    public function ors($ors) { 
     ..... 
    } 

    public function like($like) { 
    .... 
    } 

    public function eq($eq) { 
    ... 
    } 

    public function notEq($neq) { 
    ... 
    } 
} 

この私のクラス

+0

['method_exists'] http:// ph p.net/manual/ro/function.method-exists.php)を実際に呼び出し可能にするには['is_callable'](http://php.net/manual/en/function.is-callable.php)と組み合わせてください。 – Andrew

+0

はい、関数コレクターが見つかりません –

答えて

0

それはクラスで定義されていた場合、PHPは、__call方法にフォールバックします。この関数の定義がなければなりません:

public mixed __call (string $name , array $arguments); 

$name(この場合、collectorに)呼ばれた関数の名前になり、$argumentsは順番に、それに与えられた引数の配列になります。これは、特定のインスタンスの現在のプロパティに基づいて、「動的」メソッド定義を提供するためによく使用されます。これは、ここで説明されて

http://php.net/manual/en/language.oop5.overloading.php#object.call

0

私はあなたがそれがコレクタ

public function __call(string $name, array $args) 
{ 
    if($name === 'collector'){ 
     echo $name; 
    } 
} 

命名されている場合は、ここでしか関数名を取得し、特定のタスクを実行できる機能を呼び出す方法を言っていると思います指定された名前の場合、他のクラスの関数を呼び出す場合は、そのクラスをインスタンス化してメソッドを呼び出すか、call_user_method_array()などの他のメソッドを使用する必要があります...