Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Самый короткий класс для реализации хуков на PHP
Форумы портала PHP.SU » Объявления » Наработки по собственным проектам » Самый короткий класс для реализации хуков на PHP

Страниц (2): [1] 2 »
 

1. Crate - 01 Июня, 2013 - 18:44:10 - перейти к сообщению
Уместился в 131 символ (можно меньше):
PHP:
скопировать код в буфер обмена
  1. class Hook{private$e=array();function b($n,$c){$this->e[$n][]=$c;}function c($n){foreach($this->e[$n] as $c){call_user_func($c);}}}


Использование:
PHP:
скопировать код в буфер обмена
  1. $hook = new Hook; // Creating a new object for Action class
  2. $hook->b('hook', function () {echo 'Hello, world!';}); // Creating the new hook
  3. $hook->c('hook'); // Triggering all hooks that named 'hook'
2. caballero - 01 Июня, 2013 - 19:29:02 - перейти к сообщению
во первых код не твой
во вторых хуки - не самое лучшее что следует применять
3. Crate - 01 Июня, 2013 - 19:42:17 - перейти к сообщению
caballero, не мой?
4. EuGen - 01 Июня, 2013 - 19:47:32 - перейти к сообщению
Тип $e можно не определять. foreach заменить на array_map
Не применяйте хуки. Строго никогда. Нет и не придумают такую архитектуру, где без них было бы не обойтись.
5. caballero - 01 Июня, 2013 - 19:55:33 - перейти к сообщению
Цитата:
caballero, не мой?

Удивлен? Это ж не первый твой пост. Когда человек задает детские вопросы а потом предьявляет крутой код то как то "...терзают смутные сомненья... "©
Я просто обратил внимание что раздел называется "Наработки по собственным проектам "
6. Crate - 01 Июня, 2013 - 20:33:03 - перейти к сообщению
caballero пишет:
Удивлен? Это ж не первый твой пост. Когда человек задает детские вопросы а потом предьявляет крутой код то как то "...терзают смутные сомненья... "©
Я просто обратил внимание что раздел называется "Наработки по собственным проектам "
Так, давайте разберемся. Почему же код не мой? Я недавно написал менее компактный класс для работы с хуками, чтобы только понять как они работают. Сегодня решил его уменьшить, чтобы в один твит уместить. Вот и уместил :/

EuGen пишет:
Не применяйте хуки. Строго никогда. Нет и не придумают такую архитектуру, где без них было бы не обойтись.
А как тогда реализовывать плагины без перезаписи кода?
7. EuGen - 01 Июня, 2013 - 20:50:39 - перейти к сообщению
Например, рефлексией.
8. Crate - 02 Июня, 2013 - 10:50:55 - перейти к сообщению
EuGen, спасибо, теперь появилось чтиво на пару недель Улыбка
9. caballero - 02 Июня, 2013 - 10:57:23 - перейти к сообщению
и как в твоем хуке передаются параметры в функцию? похоже никак. А если плагин требует параметров?
10. Crate - 02 Июня, 2013 - 11:10:41 - перейти к сообщению
caballero, параметры? Это простейшая реализация путем навешивания хуков на одну точку в коде, а затем выполнения оных.
11. caballero - 02 Июня, 2013 - 11:34:23 - перейти к сообщению
реализация малолезная
попробуй сделать ПРАКТИЧЕСКУЮ реализацию такого хука - тогда поймешь о чем я
12. nerv - 02 Июня, 2013 - 11:58:45 - перейти к сообщению
Crate пишет:
PHP:
скопировать код в буфер обмена
  1. $hook = new Hook; // Creating a new object for Action class
  2. $hook->b('hook', function () {echo 'Hello, world!';}); // Creating the new hook
  3. $hook->c('hook'); // Triggering all hooks that named 'hook
'

Не понимаю, что это такое и зачем нужно. Пока вижу что-то вроде пользовательских событий (создание, поджиг, передача коллбека).

судя по этой доке http://bolzamo[dot]org[dot]ru/214/ , хуки - те же обертки

другие ресурсы говорят, что хук - это перехватчик...

кто-нибудь может в двух словах объяснить, что такое хуки в пхп?

Crate пишет:
PHP:
скопировать код в буфер обмена
  1. class Hook{private$e=array();function b($n,$c){$this->e[$n][]=$c;}function c($n){foreach($this->e[$n] as $c){call_user_func($c);}}}

а еще писать в одну строчку не есть гуд
13. DeepVarvar - 02 Июня, 2013 - 11:58:52 - перейти к сообщению
EuGen правильно сказал - надо рефлексию юзать, а не эти бешеные пуки.
14. caballero - 02 Июня, 2013 - 12:01:23 - перейти к сообщению
Цитата:
а еще писать в одну строчку не есть гуд

ТС хотел написать минимумом строк. Так круче.
15. nerv - 02 Июня, 2013 - 12:09:39 - перейти к сообщению
caballero пишет:
Так круче

ну-ну Улыбка Я такие коды называю "абвгдэйкой". Еще пару строк допишет, и не разберется сам.

 

Powered by ExBB FM 1.0 RC1