ArbNet

ArbNet
Рейтинг
147
Регистрация
27.10.2019
Программист самоучка

Aisamiery, Нашли к чему придраться :) Даже если оставить как есть, и будет много запросов мой движок не сдохнет, он не грузит на начальном этапе кучу всяких плагинов.. нужны они будут или нет и тд. просто идёт проверка есть ли обработчик. Мой индусский код погоды в данном случае не сделает.

А api на то и сделан чтобы сторонний разработчик через него мог добавить свой функционал если что. Или просто узел если что-то разместить на странице.

И не надо меня останавливать. Какой в этом вам прок? Я делаю для своих проектов. Кому интересно могут присоединиться, нет :) мне больше достанется

Aisamiery, Согласен. В данном случае так будет меньше кода.

Наверно пока тестирую... не задумывался о том чтобы упростить.

Aisamiery:
При том сам роутинг вы так и не показали

вот мой publish.php


<?php
namespace 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 ----------

Stek:
В смысле игнорированы ? Они судя по коду в initialization.php все уйдут.

Запрос идёт допустим на api. Файла обработчика api.php нет.

switch отправит на строчку case 'api': @require CORE.'api.php';break;

@require файл обработчика не найдёт и остановит выполнение скрипта @ гасит сообщение об ошибке. Отправляется пустой ответ.

А любые другие запросы: если есть сессия то на публикацию сайта, если нет сессии то initialization в которой определяю девайс пользователя его расширение, включён ли JS и тд. перезагружаю страницу и выдаю результат уже под девайс пользователя

Stek:
на require подавление ошибок не действует
require аналогично include, за исключением того, что при ошибке он также выдаст фатальную ошибку уровня E_COMPILE_ERROR. Другими словами, он остановит выполнение скрипта, тогда как include только выдал бы предупреждение E_WARNING, которое позволило бы скрипту продолжить выполнение.

У меня если нет обработчика запроса значит будет пустой ответ сервера просто. Любые не верные запросы будут игнорированы.

ivan-lev:
Правильно ли я понял, что статика будет обрабатываться PHP скриптом?

Да. У меня предусмотрено два вида подключения файлов.

1. Если запрашиваемый файл есть, то он отдаётся статично как и положено

2. Если такого файла нет, то обрабатывается скриптом, в гет параметре можно указать какие файлы нужно склеить в один, чтобы закэшировалось в браузере одним файлом и при подобном вызове бралось уже из кэша браузера

Если страница не большая можно подключить маленькие файлы стилей или скриптов, Или когда постоянно используются много разных стилей и скриптов, то их можно объединить

Aisamiery:
можно написать более коротко, понятнее, лайтовее

А если подумать?

Я так сделал чтобы можно было просто добавлять другие обработчики или удалять если что не нужно. Элементарно Ватсон :)

Разобраться в том г. что другие используют мне не составляет труда, а разобравшись, что-то пропадает желание его использовать.

danforth, Спасибо. Да именно, делаю в первую очередь для себя.

Sly32:
Засим откланяюсь, дальше без меня

Продолжай говнокодить и не суйся в мои темы :)

Aisamiery:
покажите реализацию и возможности своего роута?

У меня намного проще :)

никаких

Aisamiery:
сервис контейнер, который подтянет мои контроллеры и автоваринг который закинет в них зависимости

Вот зачем столько всякой хрени..

У меня просто по расширению запускается обработчик


// маршрутизация
$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';
}
Sly32:
Или опять пустобрех?

Конечно, зачем мне такой хернёй заниматься? Мне это не нужно.

---------- Добавлено 20.03.2020 в 08:48 ----------

Aisamiery:
На кой черт вообще связываться этой категории с вашей разработкой и в ней развиваться?

Подождём релиза.

Aisamiery:
Банально, назовите хотя бы 3 адекватные причины по которым есть смысл садится сейчас и писать свой фреймворк? Да же не так, фреймворк это набор библиотек решающих базовые вещи, будь то роутинг, авторизация, формы, валидация и работы с бд и так далее. Нужны причины которые заставят написать все эти либы с нуля.

Вам нет смысла, ни терпения, ни то как сделать лучше додуматься не сможете.

Для меня

1. Быстро делать свои проекты, без прикручивания всякой бяки

2. Наработать свою базу компонентов(шаблонов, стилей) и обработки данных(PHP классов)

3. На выходе более качественный продукт, чем у этих сеньоров :)

Aisamiery, Я разве говорю что крут, наоборот хотелось бы сотрудничества, с кем-то вместе разрабатывать свой инструмент, чтобы не прикручивать разное г.. Да оно работает, но г же.. А чтобы всё досконально продумать отладить и тд надо время. Поэтому и тему создал.

Sly32:
https://oao-bst.by/
Вот этот сайт я на джанге сделал за 2 месяца под ключ, один.

Хвалился уже как-то этим.. Такую херню и за пару часов сделать можно. В этом и проблема. Тяп-ляп и хрен с ним. А заказчикам ничего не остаётся как пользоваться этим, и пользователи 100% от этого не в восторге :)

ЗЫ. А слабо свой инструмент, фреймворк сделать чтобы качественные сайты получались? Зачем да? :) Я говорит и так людей не плохо дурю..

Всего: 2302