Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php日志:在多个类中使用同一对象_Php_Oop_Inheritance_Parent - Fatal编程技术网

php日志:在多个类中使用同一对象

php日志:在多个类中使用同一对象,php,oop,inheritance,parent,Php,Oop,Inheritance,Parent,我已经在这上面坐了很久了,想不出一个让我满意的方法 我的问题是: 我有一个父类和各种子类。 在父对象的构造函数中,将创建一个新对象(除其他外)。此对象来自我的日志文件类。它存储在受保护的变量中 在父类中,日志保持不是问题,一切都是按照计划完成的 如果我想在子类中使用对象,我就不能让它工作。我就是无法访问它。 我在父类中尝试了一个函数以返回对象,这也不起作用 我在这里不知所措 这是父级的构造函数: function __construct() { ... $this->reg_log

我已经在这上面坐了很久了,想不出一个让我满意的方法

我的问题是: 我有一个父类和各种子类。 在父对象的构造函数中,将创建一个新对象(除其他外)。此对象来自我的日志文件类。它存储在受保护的变量中

在父类中,日志保持不是问题,一切都是按照计划完成的

如果我想在子类中使用对象,我就不能让它工作。我就是无法访问它。 我在父类中尝试了一个函数以返回对象,这也不起作用

我在这里不知所措

这是父级的构造函数:

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()

在谷歌搜索和阅读了几个小时后,我仍然没有找到一个合适的方法来做这件事


任何有想法的人?

您应该运行
父项::\u construct()将在所有继承的子类中实例化和可见

在子类中,是否应该使用对父类的引用来调用该对象<代码>父项::
。受保护的成员应该在子类中可见,根据PHP手册
声明受保护的成员只能在类本身内以及通过继承类和父类访问
,这里有一点您可能会错过:记录器应该是装饰器,而不是依赖项。我也这么认为,但我尝试过的每一种方法,我不可能存在这个变量。当我打印对象时,变量似乎是空的,我不知道为什么。teresko,我不知道你想说什么。我不依赖它,我只是想实现它。这不是意味着每次都会新建对象吗?如果创建子类对象,所有构造函数(子类和父类的构造函数)只运行一次。