Php 构造中对象集的变量在析构函数中超出范围
因此,我开始为一个微型框架编写一个引导脚本,我正在为学习目的而工作(学习更多关于编程、php和oop的知识),我遇到了这种奇怪的意外行为 启动config()类的新对象的变量$config在Bootstrap的公共_构造中调用,然后在Bootstrap的公共_析构函数中使用。$config的变量本身是公共的,在_构造之前声明,如下所示 现在,奇怪的是,我在_destruct中使用$config时收到一个通知和致命错误,它说变量不存在,致命错误是在非对象上调用成员函数(因为$config不存在) 这是脚本,希望有人能指出为什么会发生这种奇怪的行为,可能是我遗漏了什么,而且这种行为是有道理的,但好吧,我遗漏了它,然后请指出它 执行此操作时:Php 构造中对象集的变量在析构函数中超出范围,php,oop,scope,Php,Oop,Scope,因此,我开始为一个微型框架编写一个引导脚本,我正在为学习目的而工作(学习更多关于编程、php和oop的知识),我遇到了这种奇怪的意外行为 启动config()类的新对象的变量$config在Bootstrap的公共_构造中调用,然后在Bootstrap的公共_析构函数中使用。$config的变量本身是公共的,在_构造之前声明,如下所示 现在,奇怪的是,我在_destruct中使用$config时收到一个通知和致命错误,它说变量不存在,致命错误是在非对象上调用成员函数(因为$config不存在)
$config = new Config();
您正在构造函数的作用域中创建一个新的$config
对象,而不是填充引导类的$config
属性
您必须使用$this->config
;要访问class属性,我不知道为什么$此->设置();调用包含Config类文件的函数。然后$config被设置为new config();并且应该在引导类中广泛可用,因为它被声明为public,并且在构造函数中被分配了一个对象。不,变量$config
的范围仅在构造函数中,而不是在wide类中。你说的是$this->config
这是classIt作品的公共财产,谢谢!)我想我误解了oop的一些概念。事实上,要在PHP中访问class属性,必须在它前面加上$this
,而在其他编程语言中,可以避免使用$this
前缀。我理解,感谢您的帮助,我非常感谢。