В PHP каждый запрос обрабатывается другим процессом - это означает, что вы не можете хранить какой-либо объект между запросами (вы можете сериализовать его, сохранить в файле или чем-то в этом роде, и не сериализовать это когда приходит другой запрос, но на самом деле все не так, как обычно)
Это означает, что каждый раз, когда ваш PHP-скрипт получает запрос, вы должны повторно создавать экземпляр вашего регистратора.
Теперь, если вы хотите использовать свой регистратор из нескольких разных классов / методов / функций в одном и том же скрипте, вы должны знать, что переменные не являются глобальными «по умолчанию» в PHP: переменная, объявленная вне функции, недоступна изнутри функция, если только вы не сказали это, используя глобальное ключевое слово 1009 *.
В такой ситуации, когда вы хотите, чтобы один и только один экземпляр определенного класса (ваш регистратор) был доступен из любого места в вашем приложении, люди часто используют Singleton Design Pattern .
Это позволит использовать что-то вроде этого:
My_Logger_Class::log('blah');
Из любой части вашего кода, и метод log
будет иметь дело с:
- создание экземпляра класса, если еще не было одного существующего экземпляра
- фактическое ведение журнала
И, да, в первый раз, когда этот метод вызывается для одного HTTP-запроса, ему придется заново открыть файл журнала (при входе в файл) .
Как примечание: уже есть некоторые отличные компоненты для ведения журналов, такие как PEAR::Log
или Zend_Log
.
Может быть, использование одного из них поможет вам тратить меньше времени на переизобретение какого-то колеса?