【发布时间】:2014-09-04 16:52:40
【问题描述】:
我在这里只有一个简单的问题...我正在为我的网站开发一个论坛应用程序,并且在更新我使用的一些旧方法时(我的旧代码很糟糕)我遇到了 - 不是第一次时间 - OOP 设备。
我的系统使用了很多类,并且一遍又一遍地为它们重新定义相同的函数,所以我决定创建一个能够承载这些功能的基类。
我一直在尝试在基类上使用require(),然后扩展它的类...
<?php
require(//path to base class);
class User extends BaseClass {
// code
}
?>
但我不知道如何检查它是否存在,并且它似乎没有继承基类的唯一功能......
public function __get($what) {
if(property_exists($this, $what)) {
return $this->{$what};
} else {
return null;
}
}
因为当我尝试从 User 类(例如 $user->Username)中检索变量时,它返回 NULL。该变量在类中标记为private,但在我尝试进行继承之前,这不是问题。
【问题讨论】:
-
如果
require未能添加您的文件,它无论如何都会停止脚本,不是吗?问题是什么 ?您不确定 BaseClass 是否在您需要的文件中? -
好吧,我想更清楚一点,我的问题是我最后提到的;我在 BaseClass 中定义的 __get 不像我在 User 中定义它时那样工作。我不确定是不是因为它在继承中不起作用,或者从 require()'d 类继承是否有问题。
-
我怀疑你的 BaseClass 中有一个变量 $Username?那么你应该让它受到保护。私有变量只对实际类可见,protected 对扩展类也是可见的。
-
@Splashsky 问题至少与
require无关 -
@user3535256 这实际上是有道理的。不,所有的变量都在 User 中,BaseClass 唯一拥有的是
__get函数。
标签: php class object inheritance