0

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

我在 PHP 中有一个问题。我正在尝试制作一个模型类来保存我的数据库条目。它看起来像这样:

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 对象当然是一个用户对象。为什么我不能从超类调用方法?

4

1 回答 1

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

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

于 2012-10-28T10:08:32.827 回答