0

次のようなものがある場合:

abstract class User {

    function checkThis() {          

        return true;    
    }

    function mainFunction() {

    }
}

checkThis()内から呼び出したいのmainFunction()ですが、このようにしますか?

abstract class User {

    function checkThis() {

        return true;    
    }

    function mainFunction() {

        if ($this->checkThis())
            echo "Works";
    }

これを別のクラス内から呼び出すと、次のように問題が発生するようです。

class SecondClass {

    function test() {
        User::mainFunction();
    }    
}

次のエラーが表示されます。

Fatal error: Call to undefined method SecondClass::checkThis()
4

1 に答える 1

1

この抽象クラスを拡張するインスタンス化できるクラスを持つことを検討する必要があります。例えば

class userConcrete extends User {

}

次に、2 番目のクラスで、次のようにユーザー オブジェクトを挿入できます。

class SecondClass{

    protected $user;

    public function __construct(userConcrete $user)
    {
        $this->user = $user;
    }
    function test(){
        $this->user->mainFunction();
    }

}

また、抽象クラスで mainFunction を公開します。

于 2012-10-30T14:58:37.220 に答える