#php #mysql #hook
#php #mysql #перехват
Вопрос:
У меня есть скрипт, который выводит имя пользователя примерно в 100 файлах. Теперь я хочу использовать класс для генерации имени пользователя из идентификатора пользователя.
Есть ли способ добавить перехват к этому, чтобы сделать это, или мне нужно вручную отредактировать все файлы?
Ответ №1:
Если ваш скрипт не предоставляет перехват, вероятно, нет способа изменить это без изменения файлов.
Теоретически вы могли бы захватить выходные данные скрипта, используя буферизацию выходных данных, и выполнить поиск замену в данных, но это ужасная практика.
Чтобы избежать той же проблемы в будущем, вместо изменения каждого вхождения на другое значение, вы могли бы вставить вызов showName()
функции или метода, которые вы определяете в центральном файле.
Комментарии:
1. Это моя идея. Я бы сказал Names.class.php, который будет принимать идентификатор пользователя и возвращать правильное имя пользователя
2. @Insanity да, это звучит разумно.
3. продвинутым (и я имею в виду продвинутую тактику) для рассмотрения было бы использование функций anon, новых в php 5.3. Существует также шаблон проектирования observer, в котором вы используете диспетчер событий, объекты событий и прослушиватели для интерпретации и изменения данных; этот метод предоставляет намного больше функциональности, чем простое перехват.
4. Не могли бы вы объяснить это немного подробнее?
5. для начала вот что: en.wikipedia.org/wiki/Observer_pattern — реализация этого шаблона в PHP находится здесь: components.symfony-project.org/event-dispatcher — я и несколько других взяли идею о том, как работает диспетчер событий symfony, а затем создали наш собственный, который доступен здесь: github.com/OpenFlame/OpenFlame-Framework/tree/develop-1.1/Event