1

コードに問題があり、どうしたらよいかわかりません。これを使った

$validate = new OOP_Validate;

$validate->addValidator(new OOP_Validate_Int());

if($validate->isValid('test')) echo 'TRUE';

エラーを表示します:

キャッチ可能な致命的なエラー:OOP_Validate :: addValidator()に渡された引数1は、21行目のC:\ xampp \ htdocs \ GameV \ index.phpで呼び出され、C:\ xampp\htdocsで定義されたOOP_Validate_IntのインスタンスであるインターフェイスOOP_Validate_Interfaceを実装する必要があります37行目の\GameV\ library \ OOP \ Validate.php

AddValidator:

public function addValidator(OOP_Validate_Interface $ validator、$ breakChain = false){
    $ this-> _ validators [] = array(
        '名前'=>$ validator、
        'Break' => $ breakChain、
    );
    $thisを返します。   
}

インターフェース:

インターフェイスOOP_Validate_Interface{

    パブリック関数isValid($ value);
    パブリック関数getMessage();

}

何が間違っている可能性がありますか?

4

2 に答える 2

0

エラーメッセージで説明されているように、addValidatorメソッドに渡される最初の引数は、と呼ばれるインターフェイスを実装する必要がありますOOP_Validate_Interface

$validate->addValidator(new OOP_Validate_Int() /* <-- this argument must implement OOP_Validate_Interface */);

コードを確認し、クラス宣言を次のように変更OOP_Validate_Intします。

class OOP_Validate_Int implements OOP_Validate_Interface
{

    /* 
       Then ensure that all the methods required by OOP_Validate_Interface
       are defined in this class.
    */

}

詳細については、PHPマニュアルの「オブジェクトインターフェイス」セクションを確認してください。

于 2012-04-30T15:20:09.723 に答える
0

ここでの問題は、メソッドaddValidatorがタイプOOP_Validator_Interfaceの最初のパラメーターを受け入れるが、ここでOPP_Validate_Int()のインスタンスを渡すことです$validate->addValidator(new OOP_Validate_Int());

addValidator()の最初の引数を明示的に再入力しないことをお勧めします(フレームワークの一部でない場合)。または、クラスOOP_Validate_IntはOOP_Validator_Interfaceを実装する必要がありますclass OOP_Validate_Int implements OOP_Validator_Interface { .. }

于 2012-04-30T15:23:55.673 に答える