PHP中的子类和调用方法?

时间:2012-10-28 10:05:27

标签: php apache parent subclass

我来自Objective-C,面向对象编程只是一个梦想。 (至少对我来说)

我在PHP中遇到此问题。我正在尝试创建一个Model-Class来保存我的数据库条目。它看起来像这样:

class Model {

    public function __set($name, $value)
    {
        $methodName = "set" . ucfirst($name);

        if (method_exists($this, $methodName)) {
            $methodName($value);
        } else {
            print("Setter method does not exists");
        }
    }

};

我想将其子类化并创建一个用户类。

class User extends Model {
    private $userID;

    public function userID() {
        return $this->userID;
    }

    public function setUserID($theUserID) {
        $this->userID = $theUserID;
    }

};

当我致电$user->__set("userID", "12345");时,我收到以下异常:

  

致命错误:在Model.class.php中调用未定义的函数setUserID()

$ user对象当然是User对象。为什么我不能从超类中调用方法?

1 个答案:

答案 0 :(得分:6)

if (method_exists($this, $methodName)) {
    $methodName($value);
}

您正在检查对象(method_exists($this, $methodName))中是否存在方法,而不是调用函数,而不是此对象方法,应该是:$this->$methodName($value);