Создание собственного PHP MVC фреймворка на ООП. 3. Класс Router

Поділитися
Вставка
  • Опубліковано 11 вер 2024
  • В этом уроке мы приступим к написанию класса Router, задача которого состоит в маршрутизации запроса, т.е. в том, чтобы проверить соответствие маршрута с таблицей маршрутов и, если таковое есть, то передать маршру на обработку дальше или сразу вернуть ответ на запрос.
    Исходники к уроку - github.com/mat...
    💖 Поддержка канала
    www.donational...
    5168 7574 1613 9071 (ПриватБанк)
    matroskin978@gmail.com (PayPal)
    TXGoBr7UrwRUYx7FpzbiG8znkgC6fhwtEF (USDT TRC20)
    410014621600849 (ЮMoney)
    ===============================================
    Мои курсы на Udemy
    Не получается приобрести курс или нужна скидка - обращайтесь. Решим :)
    Курс "PHP 8. ООП. Создание собственного PHP MVC фреймворка":
    www.udemy.com/...
    Курс по созданию интернет-магазина и веб-приложений в Telegram - www.udemy.com/...
    Курс по созданию собственного шаблона интернет-магазина для OpenCart 3 - www.udemy.com/...
    Курс по PHP - www.udemy.com/...
    СУБД MySQL и язык запросов SQL. Теория и практика - www.udemy.com/...

КОМЕНТАРІ • 40

  • @matroskin978
    @matroskin978  24 дні тому

    💖 Поддержка канала
    www.donationalerts.com/r/matroskin978
    4731 2196 5549 6408 (ПриватБанк)
    matroskin978@gmail.com (PayPal)
    TXGoBr7UrwRUYx7FpzbiG8znkgC6fhwtEF (USDT TRC20)
    410014621600849 (ЮMoney)
    ===============================================
    Мои курсы на Udemy
    Не получается приобрести курс или нужна скидка - обращайтесь. Решим :)
    Курс "PHP 8. ООП. Создание собственного PHP MVC фреймворка":
    www.udemy.com/course/php-8-framework/?referralCode=1D29D8356C893C7889B3
    Курс по созданию интернет-магазина и веб-приложений в Telegram - www.udemy.com/course/telegram-bots-web-apps/?referralCode=A574DFE059CF9FF4E002
    Курс по созданию собственного шаблона интернет-магазина для OpenCart 3 - www.udemy.com/course/opencart-3/?referralCode=96BAF7C78DF57D6A90CA
    Курс по PHP - www.udemy.com/course/php-8-ua/?referralCode=4DAAEA9CF6ADF447D879
    СУБД MySQL и язык запросов SQL. Теория и практика - www.udemy.com/course/mysql-sql/?referralCode=B6655F05D32032D80C0B

  • @user-rr1oo1dj2l
    @user-rr1oo1dj2l 10 днів тому

    Пока до конца архитектуру приложения, что в конечном итоге делает каждый класс и для чего, трудно уловить, но некая картина потихоньку складывается. Не пожалел, что начал вплотную писать код по вашим урокам. Только в данном случае я от себя добавляю комментарии к коду, чтобы в будущем можно было менять структуру приложения под свои нужды, ну и просто запоминаю наиболее важные приёмы, а здесь ООП нужно знать обязательно. Это я пишу тем, кто сталкивается с некими трудностями =) Я сам, если что непонятно, лезу в интернет или в книги xD От меня, как всегда, лайк.

    • @matroskin978
      @matroskin978  10 днів тому

      @@user-rr1oo1dj2l благодарю 🙂

  • @user-th4gy4sz8j
    @user-th4gy4sz8j 23 дні тому +1

    Андрей огромное спасибо за ваши уроки все четко и понятно!!!

    • @user-th4gy4sz8j
      @user-th4gy4sz8j 23 дні тому +1

      обошли все блокировки и смотрим на ютубе)))))

    • @matroskin978
      @matroskin978  23 дні тому +1

      @@user-th4gy4sz8j супер! И правильно сделали 😎

    • @matroskin978
      @matroskin978  23 дні тому +1

      Пожалуйста 😉

  • @mr_riabov
    @mr_riabov 20 днів тому

    Андрію, дякую за відео )
    Кілька пропозицій які теми ще були б корисними, можливо якісь захочете освітити в цьому плей-листі:
    1. Redis для реалізації кешу
    2. Elasticsearch для реалізації пошуку

    • @matroskin978
      @matroskin978  20 днів тому

      @@mr_riabov будь ласка 🙂
      Якщо буде час та натхнення - за теми подумаю)

  • @user-go3cq9nz1b
    @user-go3cq9nz1b 23 дні тому

    Как обычно, отличный урок! Спасибо

  • @progerlife6690
    @progerlife6690 24 дні тому

    Я рhp толком не знаю а тут уже фреймворк пишем) Спасибо! Лайк на канал подписан!

    • @matroskin978
      @matroskin978  24 дні тому

      @@progerlife6690 пожалуйста 😉

  • @user-im6ss6uv9g
    @user-im6ss6uv9g 13 днів тому

    Добрый день. Спасибо за видео. Почему вы twig не используете?

    • @matroskin978
      @matroskin978  13 днів тому

      @@user-im6ss6uv9g Добрый день! Пожалуйста)
      PHP сам по себе неплохой шаблонизатор, поэтому не использую.

  • @user-tj2dt7rm8c
    @user-tj2dt7rm8c 23 дні тому

    ❤‍🔥❤‍🔥❤‍🔥❤‍🔥❤‍🔥

  • @zohirsatorov5217
    @zohirsatorov5217 24 дні тому

    Продолжаем... 👨‍💻

    • @matroskin978
      @matroskin978  24 дні тому +1

      Приятного просмотра)

  • @paldeflex
    @paldeflex 23 дні тому

    8:41 в месте где вы добавляете маршрут для главной страницы, мой редактор почему советует объявлять именно статическую функцию, а не просто функцию. Пишет следующее: This closure can be declared as static (better scoping; in some cases can improve performance). К сожалению в интернете не получилось найти информацию о том, в каких случаях это будет лучше для производительности.

    • @matroskin978
      @matroskin978  23 дні тому

      т.е. он советует написать как-то так?
      Router::add();
      Возможно. Хотя как это улучшит производительность - вопрос) Задача метода add() - всего-то добавить в массив новые данные. Добавить это через метод объекта или через метод класса - не вижу принципиальной разницы в производительности. Поэтому оставлю, как есть)

    • @paldeflex
      @paldeflex 23 дні тому

      @@matroskin978 вот так
      $app->router->add('/', static function() {
      }, ['post', 'get']);

    • @matroskin978
      @matroskin978  23 дні тому

      Понял. Можете последовать рекомендации, но в нашем случае большого смысла в этом не будет. Рекомендуемая возможность нужна для того, чтобы предотвратить связывание замыкания с классом. У нас этого связывания нет в любом случае, как мне кажется, поэтому и смысла особого нет.

  • @dimokdimok8678
    @dimokdimok8678 22 дні тому

    Подскажите пожалуйста, как с Вами связаться для покупки курса?

    • @matroskin978
      @matroskin978  22 дні тому

      Напишите мне на matroskin978@gmail.com

  • @user-es5tv7tm3e
    @user-es5tv7tm3e 24 дні тому

    КАИФ)))

  • @artemkomarov2452
    @artemkomarov2452 23 дні тому

    Будете в рамках фреймворка писать свой di контейнер?)

  • @user-yp7gw1tq1l
    @user-yp7gw1tq1l 23 дні тому

    Добрый день, что думаете о создании телеграм канала и дублировать туда?

    • @matroskin978
      @matroskin978  23 дні тому

      Добрый день!
      Уже отвечал в комментариях к предыдущему уроку. Это все время. Я практически ничего с UA-cam не получаю, записывая видео больше в качестве хобби. Ну а с ТГ я и вовсе ничего получать не буду, а времени на выкладывание будет уходить еще больше. Профита при этом -ноль. Почему вы не хотите использовать VPN? Этот вариант предлагался и в комментах к предыдущим видео.

    • @user-yp7gw1tq1l
      @user-yp7gw1tq1l 23 дні тому

      @@matroskin978 Я сам то обошел ограничение, это было просто предложение)

    • @matroskin978
      @matroskin978  23 дні тому

      @@user-yp7gw1tq1l понял. Отлично! Ну а я вот другим пользователям пытаюсь предлагать обойти ограничения, но что-то как-то туго идет 🤔

    • @paldeflex
      @paldeflex 23 дні тому

      @@matroskin978 а про какое дополнительное время идёт речь? В телегераме просто перетаскиваешь видео в канал/группу, нажал кнопку отправить и забыл))

    • @matroskin978
      @matroskin978  23 дні тому

      @@paldeflex на это все не тратится ни единой секунды? Или все же тратится? Если тратится, тогда вот и ответ на ваш вопрос. К слову, я на ваши вопросы отвечаю, а вы на мой до сих пор не ответили...

  • @виртуоз_ру
    @виртуоз_ру 22 дні тому

    Андрей, нужно уже переходить на фреймворки, к примеру Nuxt. Ведь не удобно писать клиентскую часть на пхп и особо не интересно. На пхп писать только сервер. Просмотры может быть поднимутся.

    • @matroskin978
      @matroskin978  22 дні тому

      Так я ведь и не пишу клиентскую часть на PHP. Только серверную. То, что в шаблонах может быть немного логики на PHP в виде циклов, то это совсем не значит, что она на PHP написана. Ну а для динамики в клиентской части мне вполне хватает нативного JS. Использовать для этого JS-фреймворки мне как раз не очень интересно. Помнится, пробовал Angular, когда он еще популярен был. Попробовал, поигрался - не понравилось.

    • @виртуоз_ру
      @виртуоз_ру 21 день тому

      @@matroskin978 Ангулар это шляпа полная. Попробуйте Vue, Nuxt 3

    • @matroskin978
      @matroskin978  21 день тому

      Вы упорно предлагаете мне стать фронтендером))

    • @user-rr1oo1dj2l
      @user-rr1oo1dj2l 19 днів тому

      @@matroskin978 по поводу фронтенд фреймворков тоже такая мысль проскользнула, вот тоже вроде пытаюсь использовать React, но каких то преимуществ перед чистым JavaScript я не вижу. Я так то решил развиваться в сторону веб-технологий и машинного обучения, но немного касаюсь вопросов разработки компьютерных игр. Так как вижу возможности развития в вебе, интересно было, как создают браузерные 2d и 3d компьютерные игры. Естественно, используется html (canvas) и javascript. Вот, думаю, там фреймворки и 3d движки для создания компьютерных игр, которые запускаются прямо в браузере, имеет смысл. Видел ролики в youtube, как один англоязычный программист воссоздал старенькую игру super mario bros, но он использовал самописный вариант javascript. Но сейчас многие студии. у которых нет издателя, используют готовые движки, чтобы делать современные игры в жанре RPG, платформеры и т.д. Повторюсь, я сам в вебе решил развиваться в сторону создания приложений, но темой игр немножко интересуюсь иногда. Такие вот у меня мыслишки=)))