Крючки ... именно то, что они есть - PullRequest
3 голосов
/ 08 марта 2010

Я видел хуки в фреймворке Kohana PHP, и они работают как своего рода функция обратного вызова, запускаемая определенным событием (события Kohana, то есть перегрузка методов).

Я видел хуки в Wordpress, и я не знаю, что это такое и как их использовать (только что видел их вчера).

Я ищу события в "неструктурированном" php, я не могу их найти.

Работают ли перехватчики только в среде, основанной на событиях? Что они вообще (вообще, не только в PHP)? Для чего они хороши, если не в «событийной» среде.

Ответы [ 3 ]

3 голосов
/ 08 марта 2010

Перехватчики - это, действительно, перехват в стеке событий; список значений, по которым переходит некоторый контроллер, и если у вас есть что-либо зарегистрированное для этого события, контроллер может запустить ваш пользовательский код. Но сам по себе PHP не имеет ничего (полезного) подобного, поэтому вы делаете это самостоятельно или используете те, которые вы найдете в своем любимом приложении / системе. Это довольно распространенный способ создания архитектуры плагинов, но его также можно использовать для контроля приложений и других вещей. Ранее я писал о моем поиске для более универсального события и рабочего набора событий стека , включая этот пост здесь, на StackOverflow .

Как уже упоминали другие, PHP не имеет состояния, поэтому там, где я их использую, я использую их как простой список выполнения и подключаю к нему каждую часть моего приложения. Таким образом, я очень расширяемый, и у меня есть база для стека плагинов. (И я выпущу его в один волшебный день, когда мне будет скучно или на пенсии, или у меня будет слишком много времени и т. Д.)

Подобные стеки и хуки вы найдете, например, в WordPress, поэтому плагин, который имеет дело, скажем, с CSS, подключится к CSS_DEFINITION_EVENT (в основном, той части приложения WordPress, которая записывает CSS-вещи в HTML раздел). Этот материал везде. В PHP это применимо (ну, в основном) к пределам запроса, который вы получаете на страницу PHP (если вы не делаете PHP вне веб-сервера), но все основные операционные системы, приложения, платформы и системы имеют некоторую форму стека событий , В PHP просто нет (серьезно) встроенного.

1 голос
/ 08 марта 2010

PHP не имеет состояния, поэтому он не может иметь события. Им эмулируется ручное добавление и сохранение прослушивателей событий (вызываемых функций), а затем явный вызов указанных слушателей, когда что-то происходит в коде. Как будто было загружено новое изображение или произошла ошибка 404.

0 голосов
/ 08 марта 2010
...