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...
Полезная информация, спасибо автору
Давай учебный курс по LARAVEL ^)
И по Symfony!)
до 10 хвилини поступове пояснення, а потім ... гоп ... і ціла бібліотека =)
😂
почему в контроллере только один экшен ? как добавить несколько и не через инвоке а чтобы можно было в роутинге указывать ?
Какая цель несколько методов?
@@PronkoMax например сделать crud для новостей
Можно сделать, а можно 4 отдельных класса))
@@PronkoMax можно, но это сколько контроллеров понадобится....
4 :)
Но рекомендуется то количество классов, сколько уникальных комбинаций зависимостей для этих классов.
В одном контроллере можно созадать несколько методов обработки??
Не реккомендуется
Все класно.. але одне не зовсім ясно.. чому Ваші хендлери контролерами називаються? :)
Контролери допомагають підготувати результат обробки запиту. Можна ще назвати service або handler. Суті, я думаю це не змінить, головне, за що відповідає цей клас.
Буду радий почути ще варіанти.
@@PronkoMaxНа рахунок контролерів це питання глибоко філософічне і залишае великий простір для спекуляцій.. :) Але якщо серйозно.. То на скільки мені відомо, хоча я не впевнений і на абсолютність своїх тверджень не претендую, патерн MVC прийшов з глибокого ентерпрайз світу Java де його популяризоував М.Фаулер, чи може С де можливо його описав хтось з банди 4-х.. не суть.. головне що ці мови в основному орієнтовані на написання програм для роботи безпосередньо в операційній системі. Контроллер, це по суті просто клас який структурує екшени. І в десктопних програмам, якраз поняття екшниів в контролеррах гармонійно лягає.. тому що ми можемо мати купу різних звертань до класа контролерра в абсолютно невеликий проміжок часу, зі свїми певними змінними середовища, станом (State) контролера, що там зберігається і т.і. У випадку ж коли нам потрібно зробити певний запит у браузері для отримання відповіді з сервера, у нас цього всього немає, тобто кожен окремий запит, це по суті піднімання окремого середовища зі своїми змінними, ініціалізацією свого стану і тому немає сенсу в цій структуризації купи екнишів в класі.. тобто обробник веб-запиту це по суті своїй атомарна частина коду.. яка власне і займається тим, що обробляє (handle) вхідні параметри і запускає наступний слой.. чи ту ж модельку, чи вюшку.. чи напр прикладний (application) слой, якщо ми працюємо в контексті DDD, а той вже в свою чергу модель предметної області (Domain) викликає... і тут власне що функціонально, як на мене, получається що обробник (Handler) це саме найпідходяща назва, так як якраз він власне і обробляє запит.. а контролер, по ідеї, це типу клас який повинен контролювати запуски різних екшинів між собою.. який екшин, коли, при яких обставинах повинен запускатись в той чи інший момент часу використовуючи, власне, контекст класу контролера. Ну можна ще як на мене погодитись назвати клас екшин.. типу AddUserAction, півбіди, але думаю, що можна вважати і таке твердження справедливим..
@@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() для виклику класу.
Також вважаю, що контролер можна назвати хендлером, так як контролер хендлить (обробляє) запит.
@@PronkoMax Власне, Маджента вже від поняття контроллер, на скільки я розумію, по трохи відходить... Якщо ми поглянемо на клас Magento\Framework\App\Action\Action та його інтерфейс, то це стає очевидно... в Zend Expressive це вже діло напряму називають хендлерами.. з Symfony та Laraver не доводилось копати глибше.. то ж тут не берусь про щось стверджувати... але я вважаю, що поняття контролера прийшло у світ веб-розробки зі світу десктопних програм і просто було скальковане.. і на хвилі хайпу всі гіпермодні на той час фреймворки це підхопили, а згодом це вже стало нормою для всіх і вважається правильним.. і зараз тільки, коли накопився певний досвіт з застосування цих патернів, власне, в контексті веб-розробки, спільнота починає по трохи ці речі переосмислювати.. і приходити до того, що в процесі обробки веб-запиту поняття контроллер є абсолютно лишнім і не потрібним...
@@andriyloz7558 Маджента відходить, у версії Magento 4 - контролерів не буде. Zend також, Symfony ще походу ні. З приводу "лишнього" повністю згоден.
Ничего не видно
Что б это могло значить?)
Ты когда обьясняеш то можеш использовать нормальные слова?
Нет)