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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Самый короткий класс для реализации хуков на PHP

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Crate
Отправлено: 01 Июня, 2013 - 18:44:10
Post Id



Посетитель


Покинул форум
Сообщений всего: 312
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




Уместился в 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'
 
 Top
caballero
Отправлено: 01 Июня, 2013 - 19:29:02
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




во первых код не твой
во вторых хуки - не самое лучшее что следует применять


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Crate
Отправлено: 01 Июня, 2013 - 19:42:17
Post Id



Посетитель


Покинул форум
Сообщений всего: 312
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




caballero, не мой?
 
 Top
EuGen Администратор
Отправлено: 01 Июня, 2013 - 19:47:32
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Тип $e можно не определять. foreach заменить на array_map
Не применяйте хуки. Строго никогда. Нет и не придумают такую архитектуру, где без них было бы не обойтись.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
caballero
Отправлено: 01 Июня, 2013 - 19:55:33
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
caballero, не мой?

Удивлен? Это ж не первый твой пост. Когда человек задает детские вопросы а потом предьявляет крутой код то как то "...терзают смутные сомненья... "©
Я просто обратил внимание что раздел называется "Наработки по собственным проектам "

(Отредактировано автором: 01 Июня, 2013 - 19:56:57)



-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Crate
Отправлено: 01 Июня, 2013 - 20:33:03
Post Id



Посетитель


Покинул форум
Сообщений всего: 312
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




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

EuGen пишет:
Не применяйте хуки. Строго никогда. Нет и не придумают такую архитектуру, где без них было бы не обойтись.
А как тогда реализовывать плагины без перезаписи кода?

(Отредактировано автором: 01 Июня, 2013 - 20:33:57)

 
 Top
EuGen Администратор
Отправлено: 01 Июня, 2013 - 20:50:39
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Например, рефлексией.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Crate
Отправлено: 02 Июня, 2013 - 10:50:55
Post Id



Посетитель


Покинул форум
Сообщений всего: 312
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




EuGen, спасибо, теперь появилось чтиво на пару недель Улыбка
 
 Top
caballero
Отправлено: 02 Июня, 2013 - 10:57:23
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




и как в твоем хуке передаются параметры в функцию? похоже никак. А если плагин требует параметров?


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Crate
Отправлено: 02 Июня, 2013 - 11:10:41
Post Id



Посетитель


Покинул форум
Сообщений всего: 312
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




caballero, параметры? Это простейшая реализация путем навешивания хуков на одну точку в коде, а затем выполнения оных.

(Отредактировано автором: 02 Июня, 2013 - 11:19:02)

 
 Top
caballero
Отправлено: 02 Июня, 2013 - 11:34:23
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




реализация малолезная
попробуй сделать ПРАКТИЧЕСКУЮ реализацию такого хука - тогда поймешь о чем я


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
nerv
Отправлено: 02 Июня, 2013 - 11:58:45
Post Id



Посетитель


Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013  
Откуда: Россия


Помог: 9 раз(а)




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);}}}

а еще писать в одну строчку не есть гуд

(Отредактировано автором: 02 Июня, 2013 - 12:00:15)



-----
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
 
 Top
DeepVarvar Супермодератор
Отправлено: 02 Июня, 2013 - 11:58:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




EuGen правильно сказал - надо рефлексию юзать, а не эти бешеные пуки.
 
 Top
caballero
Отправлено: 02 Июня, 2013 - 12:01:23
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
а еще писать в одну строчку не есть гуд

ТС хотел написать минимумом строк. Так круче.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
nerv
Отправлено: 02 Июня, 2013 - 12:09:39
Post Id



Посетитель


Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013  
Откуда: Россия


Помог: 9 раз(а)




caballero пишет:
Так круче

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

(Отредактировано автором: 02 Июня, 2013 - 12:10:26)



-----
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Наработки по собственным проектам »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB