PHP和一些全局变量
require_once'modules/logger.php';
$Logger = new Logger();
require_once 'templates/list.php';
$Templates = new templatesList();
require_once 'widgets/list.php';
$Widgets = new widgetsList();
我在 templates/list.php
和 widgets/list.php
中使用 $Logger
。 $Templates
我在 /widgets/list.php
中使用。
上面的代码抛出这个错误:
注意:未定义的变量:
Logger
in.../templates/list.php
第 99 行 致命错误:调用成员函数 中非对象的toLog()
.../templates/list.php
第 99 行
UPD 这是第 99 行:
$Logger->toLog( $contentData );
require_once'modules/logger.php';
$Logger = new Logger();
require_once 'templates/list.php';
$Templates = new templatesList();
require_once 'widgets/list.php';
$Widgets = new widgetsList();
I use $Logger
in templates/list.php
and in widgets/list.php
.$Templates
I use in /widgets/list.php
.
The code above throws this error:
Notice: Undefined variable:
Logger
in.../templates/list.php
on line 99
Fatal error: Call to a member functiontoLog()
on a non-object in.../templates/list.php
on line 99
UPD
Here is line 99:
$Logger->toLog( $contentData );
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您想在对象方法中使用
$Logger
,则需要在该方法中将其标记为全局。如果不这样做,您最终将创建一个新的本地 $Logger 变量。我怀疑这就是问题所在。例如:但是,最好将 $Logger 传递到需要使用它的每个对象的构造函数中。全局变量通常不被认为是好的做法。
If you want to use the
$Logger
from within an object method, you will need to mark it as global within that method. If you don't you will end up creating a new local $Logger variable. I suspect that is what the problem is. For example:However, it would probably be better to pass $Logger into the constructor of every object which needs to use it. Global variables are not generally considered good practise.
您确定没有在 /templates/list.php 开头的某个位置取消设置 $Logger 吗?
在初始化之后和使用之前尝试 var_dumping() $Logger。
Are you sure you're not unsetting $Logger somewhere in the beginning of /templates/list.php?
Try var_dumping() $Logger after its initialization and before using.