- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
2. Нет. Свитч отработает как надо. Разница в том что первый выкидывает Fatal а второй Warning
Не про это.
require - подгружает код в любом случае, а выполняет его только в зависимости от логики.
include - подгружает код только когда к нему идет обращение.
Т.е. require используется только когда код всегда необходим, например ORM и прочее. В роутинге же лучше include, что бы убрать нагрузку на парсер и не грузить все подряд.
---------- Добавлено 20.03.2020 в 13:33 ----------
У меня если нет обработчика запроса значит будет пустой ответ сервера просто. Любые не верные запросы будут игнорированы.
В смысле игнорированы ? Они судя по коду в initialization.php все уйдут.
Не про это.
require - подгружает код в любом случае, а выполняет его только в зависимости от логики.
include - подгружает код только когда к нему идет обращение.
От куда вы такое взяли?
php.net
LazyLoad делается по другому принципу, через автолоадер и стандарт, например PSR-0 ранее или сейчас PSR-4
---------- Добавлено 20.03.2020 в 15:44 ----------
А если подумать?
Я так сделал чтобы можно было просто добавлять другие обработчики или удалять если что не нужно. Элементарно Ватсон :)
Как раз, чтобы не лазить туда каждый раз когда вам надо добавить обработчик, существует паттерн (да кому нужна эта херня правильно? нормальные программисты срали на теорию разработки, пусть юзеры эту муть читают), называется Фабрика. Вы почитайте и еще раз подумайте, переосмыслите может быть как сделать так, чтобы с добавлением новых обработчиков не надо было править файл ядра и чтоб сторонние разработчики могли добавить свои (там как раз к системе событий потихоньку подойдёте).
Aisamiery, Фабрику знаю и прочие паттерны, вот только в роутинге они ни к чему(запросы могут быть разные от просто цифры счётчика допустим, расширение web у меня перенаправляет на сайт который работает на моей программе, json файла для ajax, др до готовой страницы). У меня не надо править ядро. Маршрутизация прописана в index под нужные для движка задачи, но кто знает что ещё может понадобится в будущем мне или другим пользователям, поэтому в индексе всё так просто.
Вот когда коучи начали рассказывать про паттерны. Все стали их везде втыкать надо и не надо.. А если подумать?
---------- Добавлено 20.03.2020 в 12:30 ----------
У меня есть фабрика, класс Lorry(грузовик) через него любой узел может получить доступ к другим узлам их компонентам, структуре страницы, функциям, временным данным, к базе данных и тд.
---------- Добавлено 20.03.2020 в 12:36 ----------
В смысле игнорированы ? Они судя по коду в initialization.php все уйдут.
Запрос идёт допустим на api. Файла обработчика api.php нет.
switch отправит на строчку case 'api': @require CORE.'api.php';break;
@require файл обработчика не найдёт и остановит выполнение скрипта @ гасит сообщение об ошибке. Отправляется пустой ответ.
А любые другие запросы: если есть сессия то на публикацию сайта, если нет сессии то initialization в которой определяю девайс пользователя его расширение, включён ли JS и тд. перезагружаю страницу и выдаю результат уже под девайс пользователя
Aisamiery, Фабрику знаю и прочие паттерны, вот только в роутинге они ни к чему(запросы могут быть разные от просто цифры счётчика допустим, расширение web у меня перенаправляет на сайт который работает на моей программе, json файла для ajax, др до готовой страницы). У меня не надо править ядро. Маршрутизация прописана в index под нужные для движка задачи, но кто знает что ещё может понадобится в будущем мне или другим пользователям, поэтому в индексе всё так просто.
Вот когда коучи начали рассказывать про паттерны. Все стали их везде втыкать надо и не надо.. А если подумать?
Блин хотел же закончить =)))
Знаете почему "индусский код" так называют? Есть такая байка, что индусам платят не за решенные задачи, а за кол-во строк кода, возьмём ваш пример:
// маршрутизация
$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';
}
И чем больше расширений, тем больше строк будет кода, верно? При том приложение просто упадёт если файла не будет. Давайте в каждом case проверять наличие файла? Это еще добавит строк, а заказчик оплатить. А теперь давайте подумаем в чем разница?
$nav=pathinfo(trim($_SERVER['REDIRECT_URL'],'/'));
$file = sprintf('%s%s.php', CORE, $nav['extension']);
if (file_exists($file)) {
require $file;
} else {
require CORE . ($_SESSION['ldt'] ? 'publish.php' : 'initialization.php');
}
При том не важно сколько вы там решите добавить расширений и приложение не упадёт по сути никогда (ну надеюсь 2 файла в else всегда существуют).
При том сам роутинг вы так и не показали, как маршрутизируются конкретные урлы в самих этих файлах
Aisamiery, Согласен. В данном случае так будет меньше кода.
Наверно пока тестирую... не задумывался о том чтобы упростить.
При том сам роутинг вы так и не показали
вот мой publish.php
Aisamiery, командная работа набирает обороты..
Вот.. дошли до "pull request-ов" через форум 😂
Aisamiery, командная работа набирает обороты..
Вот.. дошли до "pull request-ов" через форум 😂
Ага, чёт я разошелся =)))
Aisamiery, Согласен. В данном случае так будет меньше кода.
Наверно пока тестирую... не задумывался о том чтобы упростить.
Это не просто меньше кода, это дальнейшее добавление файлов без изменения index.php
Тем более, если даем возможность расширять эту часть систему без изменения index.php (помним это важно, чтобы система обновлялась она приходит с index.php)
$nav=pathinfo(trim($_SERVER['REDIRECT_URL'],'/'));
$file = sprintf('%s.php', $nav['extension']);
if (file_exists(EXTEND. $file)) {
require EXTEND. $file;
} elseif (file_exists(CORE . $file)) {
require CORE . $file;
} else {
require CORE . ($_SESSION['ldt'] ? 'publish.php' : 'initialization.php');
}
И вот у нас уже есть папочка куда сторонний разработчик может положить файл api.php и изменить поведение системы не трогая системных файлов.
И вот так у вас будет во всем, в каждом куске вашей системы, так как вы не знаете как это должно работать правильно и почему именно такая реализация является наиболее правильной, банально потому что вы не видели и не знаете как оно работает на собственном опыте, так как опыта 0. Вы будете городить непонятно что и непонятно для чего, через какое то время придет осознание, начнется переписывание и так до бесконечно, потому что мы уже этот этап проходили, а не потому что мы просто юзеры готовых библиотек. Во всей этой ситуации я больше всего не могу понять с чего вы взяли что можете сделать лучше, если вы делаете это впервые?
Ту ересь с роутингом что вы скинули даже комментировать не буду, она просто не читаемая, но по диагонали понятно что там просто полный ппц.
Aisamiery, справедливости ради в мегафреймворке логика чуть другая - если нет файла CORE.'js.php' фатал_еррор должен быть:D
Aisamiery, Нашли к чему придраться :) Даже если оставить как есть, и будет много запросов мой движок не сдохнет, он не грузит на начальном этапе кучу всяких плагинов.. нужны они будут или нет и тд. просто идёт проверка есть ли обработчик. Мой индусский код погоды в данном случае не сделает.
А api на то и сделан чтобы сторонний разработчик через него мог добавить свой функционал если что. Или просто узел если что-то разместить на странице.
И не надо меня останавливать. Какой в этом вам прок? Я делаю для своих проектов. Кому интересно могут присоединиться, нет :) мне больше достанется
И не надо меня останавливать. Какой в этом вам прок?
Никто не останавливает. Намекают, что можно задуматься как это лучше сделать.
--------------
Пятница - день шофера🍿