public static function init() { Once::exec(__FILE__, function () { //Список операций выполняющихся при любом запросе со спецсимволом в адресе [-~!] и при запросах без файлов //или при яном вызове в скрипте Router::init(); //Собирается конфиг .infra.json из корня проекта //Теперь при первом обащении к классу расширения будет собираться его конфиг .infra.json из папки расширения Config::init(); //Анализируется папка vendor Находятся все производители поддерживающие конфигурационные файлы .infra.json //Некий производитель angelcharly попадёт в список поиска, если у него есть библиотека с файлом .infra.json //Эту обработку можно убрать если производители прописаны вручную в config.path.search проекта //Без этой обработке, например, переопределения в кореновм .infra.json для расширения weather //не применятся к Weather::$conf и неinfrajs расширения будет работать со значениями по умолчанию //.infra.json в самих неinfrajs расширениях также не будет прочитан, //но значения конфига по умолчанию и так указаны в переменной класса, вроде Weather::$conf по этому не скажется на работе //В общем заполняем config.path.search путями до установленных расширений Search::init(); //Автоматическая установка расширений //Cоздаются папка cache и для расширения mem создаётся папка cache/mem, если их нет //Наличие этих папок, например, обязательно для Search, который кэширует свою работу //Во время обновления запускаются тесты Update::init(); //По дате авторизации админа выход и если браузер прислал информацию что у него есть кэш //Заголовок Cache-control:no-store в расширении Nostore::on() запретит создавать кэш, если станет ясно, что modfeied не нужен Access::modified(); //Заголовки по умолчанию для Cache-Controll Nostore::init(); //Вспомогательные заголовки с информацией о правах пользователя test debug admin Access::headers(); }); }
public static function init() { //Заполнять Path::$conf['search'] нужно после того как пройдёт инициализация конфигов .infra.json //Чтобы значения по умолчанию не заменили сгенерированные значения Config::init(); if (Search::$conf["off"]) { return; } static::checkFS(); }
public static function init() { Once::exec(__FILE__ . 'init', function () { $action = Ans::GET('-update'); Config::init(); $path = Path::$conf; if ($action) { Access::test(true); if (!Update::$is) { Path::fullrmdir($path['cache']); Update::exec(); } } if ($path['fs'] && !Update::$is) { if (!is_dir($path['cache'])) { Access::$conf['test'] = true; Update::exec(); } if (Access::isTest()) { if (is_file($path['data'] . 'update')) { unlink($path['data'] . 'update'); Access::$conf['test'] = true; if (!Update::$is) { Path::fullrmdir($path['cache']); Update::exec(); } } } } if (Update::$is) { if (is_file($path['data'] . 'update')) { unlink($path['data'] . 'update'); } } }); }
<?php use infrajs\access\Access; use infrajs\path\Path; use infrajs\load\Load; use infrajs\ans\Ans; use infrajs\config\Config; use infrajs\each\Each; use infrajs\template\Template; use infrajs\router\Router; if (!is_file('vendor/autoload.php')) { chdir('../../../'); require_once 'vendor/autoload.php'; Router::init(); } Config::init(); Access::test(true); header('Infrajs-Test: Start'); $type = Ans::GET('type'); /** type=auto - Запуск всех тестов. Выполняется из других скриптов Load::loadJSON('-tester/?type=auto'); * Если все result true выдать один положительный ответ result: true * Если найдена ошибка то добавляется переадресация на страницу с ошибками type=errors без exit * type=errors - показывает только ошибки и инструкцию для справления * Если ошибок нет переадресовывает на -tester/ **/ $ans = array(); $plugin = Ans::GET('plugin'); $conf = Config::get(); $list = array(); foreach ($conf as $name => $c) { if ($plugin && $plugin != $name) {
public static function &get($name = null) { if (!$name) { return Config::getAll(); } Once::exec(__FILE__ . '::get' . $name, function () use($name) { Config::init(); Config::load($name . '/.infra.json', $name); foreach (Path::$conf['search'] as $dir) { Config::load($dir . $name . '/.infra.json', $name); } if (!isset(Config::$conf[$name])) { $r = array(); return $r; } }); return Config::$conf[$name]; }