Exemple #1
0
Event::handler('layer.oncheck', function (&$layer) {
    if (!isset($layer['divtpl'])) {
        return;
    }
    $layer['div'] = Template::parse(array($layer['divtpl']), $layer);
}, 'div:env,config,external');
Event::handler('layer.isshow', function (&$layer) {
    if (empty($layer['div']) && !empty($layer['parent'])) {
        return false;
    }
    //Такой слой игнорируется, события onshow не будет, но обработка пройдёт дальше у других дивов
    $start = false;
    if (Run::exec(Controller::$layers, function (&$l) use(&$layer, &$start) {
        //Пробежка не по слоям на ветке, а по всем слоям обрабатываемых после.. .то есть и на других ветках тоже
        if (!$start) {
            if (Each::isEqual($layer, $l)) {
                $start = true;
            }
            return;
        }
        if (@$l['div'] !== @$layer['div']) {
            return;
        }
        //ищим совпадение дивов впереди
        if (Controller::fire('layer.isshow', $l)) {
            $layer['is_save_branch'] = Layer::isParent($l, $layer);
            return true;
            //Слой который дальше показывается в томже диве найден
        }
    })) {
        return false;
Exemple #2
0
assert(true === Each::isInt($el));
$el = '12 ';
assert(false === Each::isInt($el));
/**
 * Проверка ссылок друг на друга.
 * Метод возвращает true, когда две переменные являются ссылками друг на друга.
 */
$a = 1;
$b = 1;
assert(false === Each::isEqual($a, $b));
$a = 1;
$b = $a;
assert(false === Each::isEqual($a, $b));
$a = 1;
$b =& $a;
assert(true === Each::isEqual($a, $b));
/**
 * Проверяем, количество вызовов и на какой элемент попадаем при определенном количестве вызовов.
 * Для индексного массива количество итераций анонимной функции должно равняться количеству элементов в массиве.
 * Если в индексном массиве находится вложенный индексный массив, то анонимная функция должна вызываться и
 * для каждого индекса вложенного массива.
 * Если методу передан простой элемент или ассоциативный массив, вызов анонимной функции
 * должен произойти только один раз.
 */
$counter = 0;
$el = ['oduvanio', 'mail'];
Each::exec($el, function &() use(&$counter) {
    $r = null;
    $counter++;
    return $r;
});