- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
ArbNet, так покажите реализацию и возможности своего роута? Это ведь первое что нужно сделать во фреймворке? Можем еще с symfony сравнить:
1. Там есть сервис контейнер, который подтянет мои контроллеры и автоваринг который закинет в них зависимости
2. В котроллере мне достаточно объявить аннотацию Route которая повзоляет мне задать и урл и шаблон урла и валидацию урла и на какие методы реагировать.
class BlogController extends AbstractController
{
/**
* @Route("/blog", name="blog_list")
*/
public function list()
{
// ...
}
}
/**
* @Route(
* "/contact",
* name="contact",
* condition="context.getMethod() in ['GET', 'HEAD'] and request.headers.get('User-Agent') matches '/firefox/i'"
* )
*
* expressions can also include config parameters:
* condition: "request.headers.get('User-Agent') matches '%app.allowed_browsers%'"
*/
public function contact()
{
// ...
}
3. А можно еще замаппить даже сразу на сущность, чтобы в метод пришло не ID страницы или slug страницы, а сразу модель страницы из БД
class BlogController extends AbstractController
{
// ...
/**
* @Route("/blog/{slug}", name="blog_show")
*/
public function show(BlogPost $post)
{
// $post is the object whose slug matches the routing parameter
// ...
}
}
И так далее далее далее. Вот это я называю удобно, вот это я называю для разработчиков.
Ну и наконец, фреймворк это каркас приложений, а не каркас сайтов, как на вашем фреймворке при помощи xml структуры описать api для мобильного приложения или плагина для облачной срм? Я уже даже молчу про организацию тестирования. Это настолько большой объем работы что скорее всего мы не дождемся релиза к сожалению, а если и дождёмся то он будет тестовый как и сайт с документацией.
И самое банальное, я знаю как это все сделать с нуля самостоятельно, но я опять же задам вопрос - зачем? Зачем мне тратить на это время, если эти инструменты уже закрыли эти задачи с лихвой и остается только разрабатывать специфичную для проекта логику?
Засим откланяюсь, дальше без меня
Продолжай говнокодить и не суйся в мои темы :)
покажите реализацию и возможности своего роута?
У меня намного проще :)
никаких
сервис контейнер, который подтянет мои контроллеры и автоваринг который закинет в них зависимости
Вот зачем столько всякой хрени..
У меня просто по расширению запускается обработчик
ArbNet, REDIRECT_URL не везде работать будет.
case 'js': @require CORE.'js.php'; break;
Правильно ли я понял, что статика будет обрабатываться PHP скриптом?
У меня намного проще :)
никаких
Вот в этом и проблема, у вас никаких инструментов, зачем ваш фреймворк, если можно switch сделать и самому? И вы вот это пишите 3 месяца и переделываете?
Вот зачем столько всякой хрени..
Вы не делали сложных проектов, ни одного. Суть в том, что в программе её компоненты должны выполнять минимальную функцию и знать ровно столько сколько им нужно чтобы выполнить эти действия. Тогда любой кусочек программы можно будет переписать малой кровью. Если у вас код зависит от другого кода и так по наклонной, то любое изменение в проекте будет грозить крахом всего проекта и кучей багов. Сервис контейнер позволяет не влезая в ядро подменить реализацию любой части системы на нужную тебе, не трогая ядро фреймворка, исходники модулей других разработчиков и так далее, что я замечу очень важно в модульных системах.
У меня просто по расширению запускается обработчик
Вам осталось совсем чуть чуть
---------- Добавлено 20.03.2020 в 14:32 ----------
На выходе более качественный продукт, чем у этих сеньоров :)
У вас не хватит опыта сделать качественный продукт. Нельзя прочитать книжку и сделать качественный продукт. Я хз почему вас считают подкованным человеком другие форумчане, но я явно вижу что у вас уровень "прочитал книжку Котёрова наполовину". Где же ваш релевантный опыт? В каких проектах вы участвовали, чтобы говорить что вы лучше "этих сеньоров". Чем лучше то? Почему вы вообще считаете себя разработчиком/программистом? Потому что стучать по клавиатуре умеете? По вершкам нахватались и ходите с умным видом "это говно и вот это говно".
Удачи вам в ваших разработках и обучении. Как вам уже сказали "пилите Шура, пилите, она золотая"
PS. Вы даже языка то толком не знаете, и не знаете почему нельзя использовать подавление ошибок которого у вас 6 из 10 строк кода.
PPS. А код который вы привели в простонародье называется "индусским", потому что это все можно написать более коротко, понятнее, лайтовее, с проверкой файла на существование и всего одним require
Почему вы вообще считаете себя разработчиком/программистом?
Ггг, кажется ты стал забывать на каком форуме находишься. Просто сравни его с севладом. ТС знает как:
- писать код самому
- вырезать br из списка (нужный навык в 2к20)
- и даже склонен нормально общаться, пока его не начинают откровенно унижать или оскорблять
Я не понимаю зачем заниматся травлей ТС. Я думаю ТС вполне адекватен, чтобы по итогу согласится с проблемными местами своего фреймворка, если с ним аргументированно вести дискуссию. И судя по всему, он не ставит целей написать инструмент для матерых разработчиков.
Ггг, кажется ты стал забывать на каком форуме находишься. Просто сравни его с севладом.
Я чуть выше писал, что его поведение очень напоминает поведение местных ВП спецов, которые "сделают все за 3 дня и естественно за 3 рубля"©
Я не понимаю зачем заниматся травлей ТС. Я думаю ТС вполне адекватен, чтобы по итогу согласится с проблемными местами своего фреймворка, если с ним аргументированно вести дискуссию.
Травля если и начинается, то ответом на его посты. Он спрашивает, ему отвечают (нормально как правило) и дальше ТСа начинает заносить на поворотах маленько. Никак он не воспринимает ни критику, ни советы, вообще ничего - сам себе на уме. Думает что он написал файлик со свитчем и заюзал xml либу с ядра (при том видимо SimpleXML, потому что остальные осилить нужны мозги), теперь перец такой, что его всякий юзеры джанги хрен переплюнут.
И судя по всему, он не ставит целей написать инструмент для матерых разработчиков.
Он делает убийцу ВП и Laravel одновременно если что.
$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';
Что то я уже пхп поздабыл, поправьте если я не прав:
1. на require подавление ошибок не действует
2. в данном коде require подгрузится для всех блоков, в не зависимости от кейса. А вот include как раз подгрузит только нужный.
3. статику лучше отдавать средствами вэб сервера.
4. подавлять ошибки вообще очень плохая практика. Если уж так приспичило - есть error_reporting и вывод их куда нибудь в лог фай.
Правильно ли я понял, что статика будет обрабатываться PHP скриптом?
Да. У меня предусмотрено два вида подключения файлов.
1. Если запрашиваемый файл есть, то он отдаётся статично как и положено
2. Если такого файла нет, то обрабатывается скриптом, в гет параметре можно указать какие файлы нужно склеить в один, чтобы закэшировалось в браузере одним файлом и при подобном вызове бралось уже из кэша браузера
Если страница не большая можно подключить маленькие файлы стилей или скриптов, Или когда постоянно используются много разных стилей и скриптов, то их можно объединить
можно написать более коротко, понятнее, лайтовее
А если подумать?
Я так сделал чтобы можно было просто добавлять другие обработчики или удалять если что не нужно. Элементарно Ватсон :)
Разобраться в том г. что другие используют мне не составляет труда, а разобравшись, что-то пропадает желание его использовать.
danforth, Спасибо. Да именно, делаю в первую очередь для себя.
Что то я уже пхп поздабыл, поправьте если я не прав:
1. на require подавление ошибок не действует
2. в данном коде require подгрузится для всех блоков, в не зависимости от кейса. А вот include как раз подгрузит только нужный.
3. статику лучше отдавать средствами вэб сервера.
4. подавлять ошибки вообще очень плохая практика. Если уж так приспичило - есть error_reporting и вывод их куда нибудь в лог фай.
1. Действует, просто будет белая пустая страница, так как будет подавлен Fatal
2. Нет. Свитч отработает как надо. Разница в том что первый выкидывает Fatal а второй Warning
3. Вообще не обсуждается даже, я в целом даже не вижу прикола этого свитча и по приведенному коду я так понимаю человек даже не знает определения слова роутинг, раз показал именно этот код.
4. Это наследие с php4, сейчас это треш полнейший. В 7 версии даже Fatal нормально ловятся.
на require подавление ошибок не действует
У меня если нет обработчика запроса значит будет пустой ответ сервера просто. Любые не верные запросы будут игнорированы.