<?php namespace infrajs\crumb; use infrajs\controller\Controller; use infrajs\controller\Each; use infrajs\path\Path; use infrajs\event\Event; use infrajs\sequence\Sequence; use infrajs\template\Template; use infrajs\controller\External; Path::reqif('*controller/infra.php'); Event::handler('oninit', function () { $root = Crumb::getInstance(); Sequence::set(Template::$scope, Sequence::right('infra.Crumb.query'), $root->query); Sequence::set(Template::$scope, Sequence::right('infra.Crumb.params'), Crumb::$params); Sequence::set(Template::$scope, Sequence::right('infra.Crumb.get'), Crumb::$get); $cl = function ($mix = null) { return ext\Crumb::getInstance($mix); }; Sequence::set(Template::$scope, Sequence::right('infra.Crumb.getInstance'), $cl); External::add('child', 'layers'); External::add('childs', function (&$now, &$ext) { //Если уже есть значения этого свойства то дополняем if (!$now) { $now = array(); } Each::forx($ext, function (&$n, $key) use(&$now) { if (@$now[$key]) { return; }
public static function set(&$layer, $name, &$value) { if (!isset($layer['dyn'])) { $layer['dyn'] = array(); } $layer['dyn'][$name] = $value; if (isset($layer['parent'])) { $root =& $layer['parent'][$name]; } else { $root =& Crumb::getInstance(); } if ($layer['dyn'][$name]) { $layer[$name] =& $root->getInst($layer['dyn'][$name]); } else { $layer[$name] =& $root; } }