PHP中的子类和调用方法?

NSA*_*ict 0 php apache subclass parent

我来自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");
        }
    }

};
Run Code Online (Sandbox Code Playgroud)

我想将其子类化并创建一个类User.

class User extends Model {
    private $userID;

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

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

};
Run Code Online (Sandbox Code Playgroud)

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

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

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

dev*_*ler 6

if (method_exists($this, $methodName)) {
    $methodName($value);
}
Run Code Online (Sandbox Code Playgroud)

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