How to prevent XoopsErrorHandler
まずはじめに、GIJOEさんのエントリを読んでください。いくつかのXOOPS2が使用するライブラリとモジュールは、 Notice や Warning を発生させます。それらはLegacyの働きに干渉します。 熟慮を重ねた末、私は、再びXoopsErrorHandlerを配置することにしました。しかし、回避策がここにあります。 Legacy_Controllerはデバッガインスタンスを作成するのにデリゲートを使用するようになりました。 したがって、モジュール開発者とユーザはpreloadかmodule preloadでカスタムデバッグモードを使用することができます。 以下のコードは例です。 'preload/DevelopPHPDebugger.class.php'ファイルを作成してください、そして、以下のコードをコピーしてください。

if (!defined('XOOPS_ROOT_PATH')) exit();

require_once XOOPS_ROOT_PATH . "/modules/legacy/class/Legacy_Debugger.class.php";

class DevelopPHPDebugger extends XCube_ActionFilter
{
 
function preFilter()
 
{
   
$this->mController->mSetupDebugger->add("DevelopPHPDebugger::myFactory");
 
}

 
function myFactory(&$instance, $debug_mode)
 
{
   
switch($debug_mode) {
     
case XOOPS_DEBUG_PHP:
       
$instance = new My_PHPDebugger();
       
break;

     
case XOOPS_DEBUG_MYSQL:
       
$instance = new My_MysqlDebugger();
       
break;

     
case XOOPS_DEBUG_SMARTY:
       
$instance = new My_SmartyDebugger();
       
break;

     
case XOOPS_DEBUG_OFF:
     
default:
       
$instance = new Legacy_NonDebugger();
       
break;
   
}
 
}
}

class My_PHPDebugger extends Legacy_PHPDebugger
{
 
function prepare()
 
{
   
error_reporting(E_ALL);
 
}
}

class My_MysqlDebugger extends Legacy_MysqlDebugger
{
 
function prepare()
 
{
 
}
}

class My_SmartyDebugger extends Legacy_SmartyDebugger
{
 
function prepare()
 
{
 
}
}
|