我来自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对象。为什么我不能从超类中调用方法?
答案 0 :(得分:6)
if (method_exists($this, $methodName)) {
$methodName($value);
}
您正在检查对象(method_exists($this, $methodName))
中是否存在方法,而不是调用函数,而不是此对象方法,应该是:$this->$methodName($value);