функция магии php класса __call не работает

Здравствуйте, я пытаюсь сохранить отладочную информацию с помощью функции класса 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 (); вернуть пустой массив.

1

Решение

Магический метод __call вызывается только для несуществующих методов. Но я полагаю, что ваши методы существуют.

Если вы действительно хотите проверить вызовы методов, вы можете использовать decorator. Это класс, который содержит экземпляр исходного класса, имеет тот же интерфейс, что и исходный класс, и каждый вызов метода делегируется обратно исходному объекту. Вы можете добавить собственную логику отладки в методы декоратора (или использовать __call и создать универсальный декоратор отладки). Конечно, вам нужно внедрить экземпляр декоратора в $ app-> database. Это можно сделать разными способами, в зависимости от вашей среды и среды (prod vs. dev и т. Д.).

Пример того, о чем я думаю — Регистрация всех запросов и ответов на мыло в PHP

3

Другие решения

Других решений пока нет …