PHP приложение с использованием Контроллера и Роутер PHP классов.

Поділитися
Вставка
  • Опубліковано 22 сер 2024
  • Я покажу как создать приложение на PHP и маршрутизацию запросов в контроллеры, которые мы тоже создадим.
    Репозиторий с кодом: github.com/mcs...
    В этом уроки мы выучим:
    - как инициализировать новый PHP проект с помощью composer
    - узнаем, что такое Routing и рассмотрим варианты решений
    - создадим контроллеры и используем маршрутизацию запросов
    #PHP #Основы
    Подписывайся и не пропускай новые видео каждый день!
    ---
    Telegram: t.me/maxpronko...
    Discord: / discord
    Twitter: / max_pronko
    Website: www.maxpronko.com
    Instagram: / maxpronko
    Medium: / maxpronko
    Facebook: / maxpronkocom
    Business Enquiries: www.pronkocons...

КОМЕНТАРІ • 30

  • @aleksandrsh3893
    @aleksandrsh3893 5 місяців тому

    Полезная информация, спасибо автору

  • @user-rw7uh2vo9z
    @user-rw7uh2vo9z 5 років тому +7

    Давай учебный курс по LARAVEL ^)

  • @lvivduncan
    @lvivduncan 3 роки тому +3

    до 10 хвилини поступове пояснення, а потім ... гоп ... і ціла бібліотека =)

  • @vladzaiko5012
    @vladzaiko5012 3 роки тому +1

    почему в контроллере только один экшен ? как добавить несколько и не через инвоке а чтобы можно было в роутинге указывать ?

    • @PronkoMax
      @PronkoMax  3 роки тому

      Какая цель несколько методов?

    • @vladzaiko5012
      @vladzaiko5012 3 роки тому

      @@PronkoMax например сделать crud для новостей

    • @PronkoMax
      @PronkoMax  3 роки тому

      Можно сделать, а можно 4 отдельных класса))

    • @vladzaiko5012
      @vladzaiko5012 3 роки тому

      @@PronkoMax можно, но это сколько контроллеров понадобится....

    • @PronkoMax
      @PronkoMax  3 роки тому +1

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

  • @HalauLilau
    @HalauLilau 4 роки тому

    В одном контроллере можно созадать несколько методов обработки??

    • @PronkoMax
      @PronkoMax  4 роки тому

      Не реккомендуется

  • @andriyloz7558
    @andriyloz7558 5 років тому +3

    Все класно.. але одне не зовсім ясно.. чому Ваші хендлери контролерами називаються? :)

    • @PronkoMax
      @PronkoMax  5 років тому

      Контролери допомагають підготувати результат обробки запиту. Можна ще назвати service або handler. Суті, я думаю це не змінить, головне, за що відповідає цей клас.
      Буду радий почути ще варіанти.

    • @andriyloz7558
      @andriyloz7558 5 років тому +2

      @@PronkoMaxНа рахунок контролерів це питання глибоко філософічне і залишае великий простір для спекуляцій.. :) Але якщо серйозно.. То на скільки мені відомо, хоча я не впевнений і на абсолютність своїх тверджень не претендую, патерн MVC прийшов з глибокого ентерпрайз світу Java де його популяризоував М.Фаулер, чи може С де можливо його описав хтось з банди 4-х.. не суть.. головне що ці мови в основному орієнтовані на написання програм для роботи безпосередньо в операційній системі. Контроллер, це по суті просто клас який структурує екшени. І в десктопних програмам, якраз поняття екшниів в контролеррах гармонійно лягає.. тому що ми можемо мати купу різних звертань до класа контролерра в абсолютно невеликий проміжок часу, зі свїми певними змінними середовища, станом (State) контролера, що там зберігається і т.і. У випадку ж коли нам потрібно зробити певний запит у браузері для отримання відповіді з сервера, у нас цього всього немає, тобто кожен окремий запит, це по суті піднімання окремого середовища зі своїми змінними, ініціалізацією свого стану і тому немає сенсу в цій структуризації купи екнишів в класі.. тобто обробник веб-запиту це по суті своїй атомарна частина коду.. яка власне і займається тим, що обробляє (handle) вхідні параметри і запускає наступний слой.. чи ту ж модельку, чи вюшку.. чи напр прикладний (application) слой, якщо ми працюємо в контексті DDD, а той вже в свою чергу модель предметної області (Domain) викликає... і тут власне що функціонально, як на мене, получається що обробник (Handler) це саме найпідходяща назва, так як якраз він власне і обробляє запит.. а контролер, по ідеї, це типу клас який повинен контролювати запуски різних екшинів між собою.. який екшин, коли, при яких обставинах повинен запускатись в той чи інший момент часу використовуючи, власне, контекст класу контролера. Ну можна ще як на мене погодитись назвати клас екшин.. типу AddUserAction, півбіди, але думаю, що можна вважати і таке твердження справедливим..

    • @PronkoMax
      @PronkoMax  5 років тому +1

      ​@@andriyloz7558 Дуже гарно та детально написано, дякую.
      Такі фреймворки PHP як Magento Framework, Symfony, Zend, Laravel мають підтримку MVC, що включає Action Controller клас, який є вхідною точкою для опрацювання конкретного запиту. Не будемо плутати з Front Controller, який маючи всі знання, здатний знайти правильний клас або обробник (handler або controller) для конкретного запросу. І поняття контролера дуже ширико використовується і в веб розробці. Контролер буде відповідати за обробку виключних ситуацій, якщо такі є та були повернуті з доменної області що може включати моделі, валідатори та інші сервіси, які необхідно підняти для обробки запиту.
      Повертаючись до League/Route, те що у них вхідний параметер методу map() називається $handle, це не означає, що саме ім'я класу або функція має називатись або містити назву handle, або не називатись controller. Єдина вимога до цього параметру це - метод/функція має повернути ResponseInterface. Все, що робиться всередині методу або функції, це вже питання, яке не стосується саме бібліотеки League/Route. По факту, бібліотека не каже, що треба використовувати ООП, MVC або процедурщину.
      А те що контролер по дефінішину екшн, як у прикладі з AddUserAction, то я повністю розділяю думку. Колись при zend framework 1 всі методи контролера мали містити суфікс Action, як наприклад indexAction(), addUserAction(). зараз, при всіх PSR стандартах та нових розробках, це вже не вимога, як ми бачимо, можемо навіть використовувати __invoke() для виклику класу.
      Також вважаю, що контролер можна назвати хендлером, так як контролер хендлить (обробляє) запит.

    • @andriyloz7558
      @andriyloz7558 5 років тому +1

      @@PronkoMax Власне, Маджента вже від поняття контроллер, на скільки я розумію, по трохи відходить... Якщо ми поглянемо на клас Magento\Framework\App\Action\Action та його інтерфейс, то це стає очевидно... в Zend Expressive це вже діло напряму називають хендлерами.. з Symfony та Laraver не доводилось копати глибше.. то ж тут не берусь про щось стверджувати... але я вважаю, що поняття контролера прийшло у світ веб-розробки зі світу десктопних програм і просто було скальковане.. і на хвилі хайпу всі гіпермодні на той час фреймворки це підхопили, а згодом це вже стало нормою для всіх і вважається правильним.. і зараз тільки, коли накопився певний досвіт з застосування цих патернів, власне, в контексті веб-розробки, спільнота починає по трохи ці речі переосмислювати.. і приходити до того, що в процесі обробки веб-запиту поняття контроллер є абсолютно лишнім і не потрібним...

    • @PronkoMax
      @PronkoMax  5 років тому +1

      @@andriyloz7558 Маджента відходить, у версії Magento 4 - контролерів не буде. Zend також, Symfony ще походу ні. З приводу "лишнього" повністю згоден.

  • @aleksmoon1388
    @aleksmoon1388 3 роки тому

    Ничего не видно

    • @PronkoMax
      @PronkoMax  3 роки тому

      Что б это могло значить?)

  • @surzhik4609
    @surzhik4609 4 роки тому +1

    Ты когда обьясняеш то можеш использовать нормальные слова?