Aisamiery, Нашли к чему придраться :) Даже если оставить как есть, и будет много запросов мой движок не сдохнет, он не грузит на начальном этапе кучу всяких плагинов.. нужны они будут или нет и тд. просто идёт проверка есть ли обработчик. Мой индусский код погоды в данном случае не сделает.
А api на то и сделан чтобы сторонний разработчик через него мог добавить свой функционал если что. Или просто узел если что-то разместить на странице.
И не надо меня останавливать. Какой в этом вам прок? Я делаю для своих проектов. Кому интересно могут присоединиться, нет :) мне больше достанется
Aisamiery, Согласен. В данном случае так будет меньше кода.
Наверно пока тестирую... не задумывался о том чтобы упростить.
вот мой publish.php
<?phpnamespace core;ini_set('display_errors',1);ini_set('error_reporting',E_ALL);ini_set('display_startup_errors',1);//header('Set-Cookie: cross-site-cookie=name; SameSite=None; Secure');// установим кодировкуsetlocale(LC_ALL,'ru_RU.UTF-8');// загрузим настройки конфигурации$cnf=@parse_ini_file('config.ini',true);if(!$cnf)exit(NAME.':> Нет файла конфигурации');// установим навигацию модуль&действие$mod=&$_SESSION['mod'];$act=&$_SESSION['act'];// определим параметры запросаif(!isset($nav['dirname'])){ list($mod,$act)=explode('/',$cnf['page']['site']); $nav['dirname']=$mod;$nav['filename']=$act;}elseif($nav['dirname']=='.'){$mod=$nav['filename']; list($mod,$act)=explode('/',$cnf['page'][$mod]); $nav['filename']=$act;}else{ $nav['parameter']=explode('/',$nav['dirname']); $mod=$nav['parameter'][0];$nav['dirname']=$mod; if(count($nav['parameter'])>1) unset($nav['parameter'][0]); else unset($nav['parameter']);}// путь к страницеif($nav['filename'])$act=$nav['filename'];$way=($mod=='control'?'node':'mods').'/'.$mod.'/'.$act.'.xml';if(!file_exists($way)){ $bad=$way;$mod='site';$act='nopage'; $way='mods/'.$mod.'/'.$act.'.xml';}// установим скин$skn=&$_SESSION['skn'];if($mod=='control')$skn=$mod;else{ if(isset($_POST['skin']))$skn=$_POST['skin']; elseif(isset($_GET['skin']))$skn=$_GET['skin']; elseif(isset($_COOKIE['skn']))$skn=$_COOKIE['skn']; else{$skn=$cnf['skin'];$_COOKIE['skn']='';} if(!is_dir('node/skin/'.$skn))$skn=$cnf['skin']; if($_COOKIE['skn']!=$skn)setcookie('skn',$skn);}$err=[];// массив для ошибок// получение информации об ошибкеset_error_handler(function($ern,$mes,$nfl,$lin){global $err; array_push($err,"$ern [$nfl:$lin] $mes");});// при завершении выведем ошибкиregister_shutdown_function(function(){global $err; if($err)echo PHP_EOL. '<!-- ERROR\'s REPORT'.PHP_EOL. implode(PHP_EOL,$err).PHP_EOL.'-->';});// константа тестированияdefine('test',isset($_POST['test']));//print_r(get_defined_vars());// запуск движкаEngine::Instance();?>
Aisamiery, Фабрику знаю и прочие паттерны, вот только в роутинге они ни к чему(запросы могут быть разные от просто цифры счётчика допустим, расширение web у меня перенаправляет на сайт который работает на моей программе, json файла для ajax, др до готовой страницы). У меня не надо править ядро. Маршрутизация прописана в index под нужные для движка задачи, но кто знает что ещё может понадобится в будущем мне или другим пользователям, поэтому в индексе всё так просто.
Вот когда коучи начали рассказывать про паттерны. Все стали их везде втыкать надо и не надо.. А если подумать? ---------- Добавлено 20.03.2020 в 12:30 ---------- У меня есть фабрика, класс Lorry(грузовик) через него любой узел может получить доступ к другим узлам их компонентам, структуре страницы, функциям, временным данным, к базе данных и тд. ---------- Добавлено 20.03.2020 в 12:36 ----------
Запрос идёт допустим на api. Файла обработчика api.php нет.
switch отправит на строчку case 'api': @require CORE.'api.php';break;
@require файл обработчика не найдёт и остановит выполнение скрипта @ гасит сообщение об ошибке. Отправляется пустой ответ.
А любые другие запросы: если есть сессия то на публикацию сайта, если нет сессии то initialization в которой определяю девайс пользователя его расширение, включён ли JS и тд. перезагружаю страницу и выдаю результат уже под девайс пользователя
У меня если нет обработчика запроса значит будет пустой ответ сервера просто. Любые не верные запросы будут игнорированы.
Да. У меня предусмотрено два вида подключения файлов.
1. Если запрашиваемый файл есть, то он отдаётся статично как и положено
2. Если такого файла нет, то обрабатывается скриптом, в гет параметре можно указать какие файлы нужно склеить в один, чтобы закэшировалось в браузере одним файлом и при подобном вызове бралось уже из кэша браузера
Если страница не большая можно подключить маленькие файлы стилей или скриптов, Или когда постоянно используются много разных стилей и скриптов, то их можно объединить
А если подумать?
Я так сделал чтобы можно было просто добавлять другие обработчики или удалять если что не нужно. Элементарно Ватсон :)
Разобраться в том г. что другие используют мне не составляет труда, а разобравшись, что-то пропадает желание его использовать.
danforth, Спасибо. Да именно, делаю в первую очередь для себя.
Продолжай говнокодить и не суйся в мои темы :)
У меня намного проще :)
никаких
Вот зачем столько всякой хрени..
У меня просто по расширению запускается обработчик
// маршрутизация$nav=pathinfo(trim($_SERVER['REDIRECT_URL'],'/'));switch($nav['extension']){ case 'js': @require CORE.'js.php'; break; case 'css': @require CORE.'css.php';break; case 'api': @require CORE.'api.php';break; case 'web': @require CORE.'web.php';break; default: if($_SESSION['ldt'])@require CORE.'publish.php'; else @require CORE.'initialization.php';}
Конечно, зачем мне такой хернёй заниматься? Мне это не нужно.---------- Добавлено 20.03.2020 в 08:48 ----------
Подождём релиза.
Вам нет смысла, ни терпения, ни то как сделать лучше додуматься не сможете.
Для меня
1. Быстро делать свои проекты, без прикручивания всякой бяки
2. Наработать свою базу компонентов(шаблонов, стилей) и обработки данных(PHP классов)
3. На выходе более качественный продукт, чем у этих сеньоров :)
Aisamiery, Я разве говорю что крут, наоборот хотелось бы сотрудничества, с кем-то вместе разрабатывать свой инструмент, чтобы не прикручивать разное г.. Да оно работает, но г же.. А чтобы всё досконально продумать отладить и тд надо время. Поэтому и тему создал.
Хвалился уже как-то этим.. Такую херню и за пару часов сделать можно. В этом и проблема. Тяп-ляп и хрен с ним. А заказчикам ничего не остаётся как пользоваться этим, и пользователи 100% от этого не в восторге :)
ЗЫ. А слабо свой инструмент, фреймворк сделать чтобы качественные сайты получались? Зачем да? :) Я говорит и так людей не плохо дурю..