コード例 #1
0
ファイル: Controller.php プロジェクト: infrajs/controller
 public static function check(&$layers)
 {
     static::$layers =& $layers;
     //Пробежка по слоям
     Event::tik('Infrajs');
     Event::tik('layer');
     Event::fire('Infrajs.oninit');
     //сборка событий
     Run::exec(static::$layers, function &(&$layer, &$parent) {
         //Запускается у всех слоёв в работе
         $r = null;
         if ($parent) {
             $layer['parent'] =& $parent;
         }
         Event::fire('layer.oninit', $layer);
         if (!Event::fire('layer.ischeck', $layer)) {
             return $r;
         }
         Event::fire('layer.oncheck', $layer);
         return $r;
     });
     //разрыв нужен для того чтобы можно было наперёд определить показывается слой или нет. oncheck у всех. а потом по порядку.
     Event::fire('oncheck');
     //момент когда доступны слои по getUnickLayer
     Run::exec(static::$layers, function &(&$layer) {
         //С чего вдруг oncheck у всех слоёв.. надо только у активных
         $r = null;
         if (Event::fire('layer.isshow', $layer)) {
             //Событие в котором вставляется html
             Event::fire('layer.onshow', $layer);
             //при клике делается отметка в конфиге слоя и слой парсится... в oncheck будут подстановки tpl и isRest вернёт false
             //onchange показанный слой не реагирует на изменение адресной строки, нельзя привязывать динамику интерфейса к адресной строке, только черещ перепарсивание
         }
         return $r;
     });
     //у родительского слоя showed будет реальное а не старое
     Event::fire('Infrajs.onshow');
     //loader, setA, seo добавить в html, можно зациклить check
     $html = View::html();
     //View::html('',true);
     return $html;
 }
コード例 #2
0
ファイル: Event.php プロジェクト: infrajs/event
 public static function tik($name = null, $clear = null)
 {
     /**
      * Режим повторения, сбросить что есть и начать заного.
      * Передаётся класс или имя
      * clear true - удалить и всех подписчиков
      **/
     $lists =& Event::$list;
     if (!$name) {
         foreach ($lists as $name => $v) {
             Event::tik($name, $clear);
         }
         return;
     }
     if (!empty($lists[$name])) {
         $list =& $lists[$name];
         for ($i = 0, $l = sizeof($list['list']); $i < $l; $i++) {
             $list['list'][$i]['executed'] = array();
         }
         $list['data'] = array();
         $list['result'] = array();
         //Выполнено событие или нет
         $list['readyobj'] = array();
         //Массив с временными отметками по объектам что выполнено. При равенстве количество с keys. Ключ попадает в массив ready
         $list['readykeys'] = array();
         //Выполненные ключи
         if ($clear) {
             $list['keys'] = array();
             $list['list'] = array();
         }
     } else {
         foreach ($lists as $i => $v) {
             if ($lists[$i]["class"] != $name) {
                 continue;
             }
             Event::tik($i, $clear);
         }
     }
 }