【发布时间】:2014-08-24 06:21:07
【问题描述】:
我有一个 requires 几个类的主文件 (framework.php)。为简单起见,我们只假设带有 Messages 类的消息,并使用 Automate 类自动化。消息类存储用户刷新页面时在前端显示的会话消息等。当我在Automate 中添加消息时,我通过$msg = new Messages; $msg->add('s', 'Hello World!'); 这样做但是每次我想添加$msg 时我都会重复$msg = new Messages,因为这很混乱,我只想调用一次类。所以我像这样在构造函数中初始化类:
class Automate
{
protected $msg;
//public $connection;
public $cke;
public $debug = false;
public $disallow_insert;
public $bImgUp = BACKEND_IMAGE_UPLOAD_PATH;
public $fImgUp = FRONTEND_IMAGE_UPLOAD_PATH;
public function __construct() {
global $disallow_insert;
$this->disallow_insert = $disallow_insert;
$this->cke = (bool) self::ckeCheck();
$this->msg = new Messages();
}
并在我的主文件中添加它$msg = new Messages();,这样我就可以调用显示函数echo $msg->display();
但是这种方法不起作用(没有错误,但仍然如此),似乎唯一起作用的是我在每次添加或显示之前初始化$msg = new Messages();。我做错了什么?
我应该提到我正在使用this session based message script.
更新:
我已经通过在消息类中注释掉clear 函数来确定消息正在被添加。似乎该变量在显示之前就被取消设置了。
【问题讨论】:
-
如何通过 getter 从
Automate类外部访问$msg变量? -
$msg = new Messages();请记住消息存储在会话变量中(参见脚本)
-
您可以尝试在您的
Messages::clear()方法中使用debug_print_backtrace(),以查看实际调用它的时间和原因。 -
感谢这个小功能!不知道这件事。我得到:#0 Messages->clear() 在 [C:\xampp\htdocs\fagard_designs\neou_cms\framework\classes\messages.php:114] 调用 #1 Messages->display() 在 [C:\xampp \htdocs\fagard_designs\neou_cms\update_pages.php:20]
-
这是否意味着 clear 在显示之前被调用?我的意思是这没有意义,它只会在显示结束时被调用!