【发布时间】:2013-04-14 15:43:09
【问题描述】:
我已经坐了很多年了,找不到让我满意的方法。
我的问题: 我有一个父类和各种子类。 在父级的构造函数中,创建了一个新对象(除其他外)。这个对象来自我的日志文件类。它存储在受保护的变量中。
在父类中,日志保存不是问题,一切都按计划进行。
如果我想在子类中使用该对象,我无法让它工作。我只是无法访问它。 我在父类中尝试了一个函数来返回对象,这也不起作用。
我在这里不知所措。
这是父级的构造函数:
function __construct() {
...
$this->reg_log_file = new log_file(bef_registration::REG_LOG_NAME, bef_registration::REG_LOG_KEEPING);
...
}
为了创建新条目,在父类中,以下内容就足够了:
$this->reg_log_file->entry('start log');
在子类中,这会导致错误:
在非对象上调用成员函数 entry()
在谷歌搜索和阅读几个小时后,我仍然没有想出正确的方法。
有人有想法吗?
【问题讨论】:
-
在 Child 类中,您不应该使用对 parent 的引用来调用该对象吗?
parent::。根据 PHP 手册Members declared protected can be accessed only within the class itself and by inherited and parent classes,受保护的成员应该在子类中可见 -
以下是您可能错过的内容:记录器应该是装饰器,而不是依赖项。
-
我也这么认为,但是我尝试过的每一种方式,我都无法存在变量。当我 print_r 对象时,变量似乎为空,我不知道为什么。 teresko,我不知道你想说什么。我不依赖它,我只是想实现它。
标签: php oop inheritance parent