PHP从抽象方法中调用抽象方法

时间:2012-10-30 14:42:31

标签: php

如果你有以下内容:

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()

1 个答案:

答案 0 :(得分:1)

你应该考虑让你可以实例化一个扩展这个抽象类的类。 e.g。

class userConcrete extends User {

}

然后在第二课中你可以像这样注入用户对象:

class SecondClass{

    protected $user;

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

}

还在您的抽象类中公开mainFunction。