Здравствуйте, я пытаюсь сохранить отладочную информацию с помощью функции класса magick __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 array … $ app-> database-> debug (); вернуть пустой массив.
Магический метод __call вызывается только для несуществующих методов. Но я полагаю, что ваши методы существуют.
Если вы действительно хотите проверить вызовы методов, вы можете использовать decorator. Это класс, который содержит экземпляр исходного класса, имеет тот же интерфейс, что и исходный класс, и каждый вызов метода делегируется обратно исходному объекту. Вы можете добавить собственную логику отладки в методы декоратора (или использовать __call и создать универсальный декоратор отладки). Конечно, вам нужно внедрить экземпляр декоратора в $ app-> database. Это можно сделать разными способами, в зависимости от вашей среды и среды (prod vs. dev и т. Д.).
Пример того, о чем я думаю — Регистрация всех запросов и ответов на мыло в PHP
Других решений пока нет …