Поставить функцию в очередь (например, wordpress add_action) - PullRequest
2 голосов
/ 15 января 2012

Как мне поставить в очередь функции в PHP?Мне нужно что-то, что работает так же, как система Wordpress add_action.Мне нужна функция постановки в очередь, которая затем запускается, когда наступит подходящее время.

Редактировать

Кажется, это работает отлично.У кого-нибудь есть советы по улучшению моего кода?

 $enqueued_actions = array();

 /**
  * Enqueue an action to run at a later time.
  * @param string  $hook The hook name.
  * @param obj  $func The function object.
  * @param integer $imp  The level of importance from 0-9
  */
 function add_action($hook, $func, $imp = 0) {

     global $enqueued_actions;

     $enqueued_actions[$hook][] = array('func' => $func, 'imp' => $imp);
 }

 /**
  * Run the enqueued actions with the correct hook.
  * @param  string $hook Hook name.
  */
 function run_action($hook) {

     global $enqueued_actions;

     $actions = $enqueued_actions[$hook];

     for($i = 0; $i < 9; $i++) {
         foreach($enqueued_actions[$hook] as $action) {
             if($action['imp'] == $i) {
                call_user_func($action['func']);
            }
         }     
     }

 }

1 Ответ

0 голосов
/ 15 января 2012

Вы находитесь на правильном пути здесь.Возможно, вы захотите сделать эти перехваты постоянными, то есть сохраните перехватчики в базе данных, CSV-файле, объектной модели XML и т. Д.

Также вы можете захотеть ввести функцию для вызовавсе действия, которые были привязаны к определенному хуку, что-то вроде call_actions($hook);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...