php class 魔法函数 __call 不起作用
php class magick function __call doesn't work
您好,我尝试使用 magick class 函数 __call 来存储调试信息,但没有存储在....
__call
function __call($method, $arguments)
{
$load_functions = array('get', 'insert', 'update', 'delete', 'rawQuery');
if(in_array($method, $load_functions))
{
array_push($this->_debug, microtime(true));
}
}
执行
$app->database->setbase('MyBase');
$query = $app->database->get('MEMB_INFO');
$app->database->debug();
没有任何内容存储到 $this->_debug 数组中... $app->database->debug(); return 空数组。
魔术方法__call 仅针对不存在的方法调用。但我想你的方法是存在的。
如果你真的想检查调用的方法,你可以使用装饰器。 class 持有原始 class 的实例,具有与原始 class 相同的接口,并且每个方法调用都委托回原始对象。您可以将自定义调试逻辑添加到装饰器方法(或使用 __call 并创建通用调试装饰器)。当然,您需要将装饰器实例注入 $app->database。它可以通过多种方式完成,具体取决于您的框架和环境(生产与开发等)。
我所想的例子 - Logging all Soap request and responses in PHP
您好,我尝试使用 magick class 函数 __call 来存储调试信息,但没有存储在....
__call
function __call($method, $arguments)
{
$load_functions = array('get', 'insert', 'update', 'delete', 'rawQuery');
if(in_array($method, $load_functions))
{
array_push($this->_debug, microtime(true));
}
}
执行
$app->database->setbase('MyBase');
$query = $app->database->get('MEMB_INFO');
$app->database->debug();
没有任何内容存储到 $this->_debug 数组中... $app->database->debug(); return 空数组。
魔术方法__call 仅针对不存在的方法调用。但我想你的方法是存在的。
如果你真的想检查调用的方法,你可以使用装饰器。 class 持有原始 class 的实例,具有与原始 class 相同的接口,并且每个方法调用都委托回原始对象。您可以将自定义调试逻辑添加到装饰器方法(或使用 __call 并创建通用调试装饰器)。当然,您需要将装饰器实例注入 $app->database。它可以通过多种方式完成,具体取决于您的框架和环境(生产与开发等)。
我所想的例子 - Logging all Soap request and responses in PHP