0
這裏有個奇怪的問題。使用Yii框架我有下面的類Yii:在自定義類中運行方法時出現意外調用CHttpSession :: close
class HtmlTableUi
{
public function __construct(CWebModule &$module,$data,$actions)
{
//...code goes here...
}
protected function renderTable()
{
//... code goes here ...
}
}
我可以從HtmlTableUi的實例在SchedulerModule類,這是一個單獨的應用程序模塊中的主類調用HtmlTableUi :: renderTable()。我SchedulerModule.php文件:
<?php
Yii::import('scheduler.components.HtmlTableUi');
class SchedulerModule extends CWebModule
{
public function init()
{
parent::init();
}
public function beforeControllerAction($controller, $action)
{
return true;
}
public function printUI($data,$actions,$submitPath)
{
$ui = new HtmlTableUi($this,$data,$actions,$submitPath);
$ui->renderTable();
}
}
這裏談到棘手的部分 - 當我從視圖(的index.php)這樣
<?php
$this->module->printUI($casino,$actions,null);
?>
代碼流調用SchudulerModule :: printUI經過SchudulerModule :: printUI,直到renderTable被調用($ ui-> renderTable();),而是在該方法的主體內的第一行,它違背任何邏輯和規則,出人意料地跳轉到CHttpSession ::關閉 !!?
通知的調用堆棧之前調用renderTable
protected/modules/scheduler/SchedulerModule.php.SchedulerModule->printUI:153
protected/modules/scheduler/views/default/index.php.require:21
/home/default/workspace/src/vlt/web/yii-1.1.12.b600af/framework/web/CBaseController.php.CBaseController->renderInternal:127
/home/default/workspace/src/vlt/web/yii-1.1.12.b600af/framework/web/CBaseController.php.CBaseController->renderFile:96
/home/default/workspace/src/vlt/web/yii-1.1.12.b600af/framework/web/CController.php.CController->renderPartial:870
/home/default/workspace/src/vlt/web/yii-1.1.12.b600af/framework/web/CController.php.CController->render:783
protected/modules/scheduler/controllers/DefaultController.php.DefaultController->actionIndex:57
後:
/home/default/workspace/src/vlt/web/yii-1.1.12.b600af/framework/web/CHttpSession.php.CHttpSession->close:134
/home/default/workspace/src/vlt/web/yii-1.1.12.b600af/framework/web/CHttpSession.php.SchedulerModule->printUI:0
protected/modules/scheduler/views/default/index.php.require:21
/home/default/workspace/src/vlt/web/yii-1.1.12.b600af/framework/web/CBaseController.php.CBaseController->renderInternal:127
/home/default/workspace/src/vlt/web/yii-1.1.12.b600af/framework/web/CBaseController.php.CBaseController->renderFile:96
/home/default/workspace/src/vlt/web/yii-1.1.12.b600af/framework/web/CController.php.CController->renderPartial:870
/home/default/workspace/src/vlt/web/yii-1.1.12.b600af/framework/web/CController.php.CController->render:783
protected/modules/scheduler/controllers/DefaultController.php.DefaultController->actionIndex:57
有沒有人有類似的問題?任何人都可以解釋這種行爲
您發佈了調用堆棧,並且您的錯誤消息是? – 2013-05-15 09:31:40
沒有錯誤信息,沒有任何東西......就像一切工作正常,除了應用程序的意外行爲。 – 0xC0DEGURU
也許你沒有'error_reporting'或'display_errors'設置爲'off',php應該顯示訪問受保護方法的錯誤。 'CHttpSession'' close'也會被錯誤調用。 – 2013-05-15 12:44:13