Чат веб-разработчиков
Контроллер в MVC на PHP

Controller в MVC

Итак, мы разобрались за что должен отвечать каждый слой модели MVC. Давайте теперь остановимся более подробно на контроллере.

Контроллер – это точка входа в наше приложение + логика того, что вообще нужно сделать. Контроллер работает с моделями и передаёт результат во View.

Звучит несложно. Так давайте же теперь создадим наш первый контроллер!

Внутри папки src/MyProject создаём папку Controllers. А внутри неё – файл с именем MainController.php. Это будет контроллер для главной страницы сайта. Отсюда и название – Main.

Структура проекта

Содержимое этого файла делаем таким:
src/MyProject/Controllers/MainController.php

Код доступен только после покупки курса ООП в PHP.

Теперь давайте вернёмся в файл index.php и в нём создадим объект этого класса и вызовем метод main().
www/index.php

Код доступен только после покупки курса ООП в PHP.

Давайте теперь откроем в браузере наш проект и увидим следующее.

Код доступен только после покупки курса ООП в PHP.

Вуаля! Наш первый контроллер готов.

Разумеется, контроллер может быть не один, их может быть несколько. И у контроллера может быть несколько методов.

Давайте добавим метод sayHello() в тот же контроллер. Пусть у этого метода будет один строковый аргумент $name. И всё, что будет делать этот метод – это выводить строку «Привет, $name».
src/MyProject/Controllers/MainController.php

Код доступен только после покупки курса ООП в PHP.

Теперь давайте добавим в index.php обработку GET-параметра name. Если он не пустой, то мы будем вызывать метод sayHello() и передавать туда этот параметр. Иначе – мы будем вызывать метод main().
www/index.php

Код доступен только после покупки курса ООП в PHP.

Теперь, если мы перейдём по адресу http://myproject.loc то увидим всё ту же «Главную страницу». Но если мы перейдём по адресу http://myproject.loc/?name=Иван то увидим сообщение «Привет, Иван».
Итак, мы разобрались с тем, что такое контроллер и с тем, что у него может быть несколько методов.

Публичные методы контроллера ещё называются action-ами (от англ. action - действие).

Чем же тогда является index.php? Это ведь и точка входа, и место, где мы создаём сам контроллер и вызываем его методы. Этот кусок кода называется фронт-контроллером. И в следующих уроках мы изучим, как можно его усовершенствовать, чтобы не писать кучу кода для создания других контроллеров и сделаем его более гибким.

Читайте также
Комментарии