Проектирование контроллера ООП PHP

D
На сайте с 28.06.2008
Offline
1101
204

Переписываю один из своих сайтов на Джумле на свой движок MVC.

Это мой первый опыт, работа двигается постепенно переношу функционал и вот задался я вопросом. У меня есть большой компонент, я написал для него контроллер, куда приходят запросы с роута и он уже делает запросы к моделям и выводит инфу на вьюшки.

В итоге над названием класса контроллера у меня уже 15 (будет порядка 20-25) 

use Models\...блаблабла

И вот я не знаю - правильно это или нет? С одной стороны удобно, один контроллер на весь компонент, быстро что-то найти.

С другой у меня есть опасения, а не создает ли это лишнюю ненужную нагрузку? Или же все равно все сразу попадает в кеш и пофигу сколько там use ?

Как правильно, стоит ли разбивать на несколько контроллеров или в этом нет смысла и делаю правильно?

ArbNet
На сайте с 27.10.2019
Offline
124
#1
Не правильно, но ты делай как делаешь, иначе не сможешь понять как сделать лучше, при создании сайта будет необходимость ещё что-то добавить\изменить и тд. и в процессе уже переделав несколько раз настроишь свой контроллер, своё ядро движка.
Обсуждение разработки на моём фреймворке https://discord.gg/23N4s9x2kp
L
На сайте с 10.02.2015
Offline
220
#2

use не влияет на производительность.

Класс в этот момент не загружается.

W1
На сайте с 22.01.2021
Offline
282
#3
livetv #:

use не влияет на производительность.

Класс в этот момент не загружается.

Если есть use, то наверняка дальше по коду есть и загрузка класса.

Мой форум - https://webinfo.guru –Там я всегда на связи
E
На сайте с 01.10.2017
Offline
93
#4
Dram :
И вот я не знаю - правильно это или нет?

Можно не использовать множественные use, если это целесообразно.

Можно использовать абсолютные имена, если они устоявшиеся и используются однократно.

Можно использовать относительные имена:

use Models\SubNS;

$m1 = new SubNS\M1;
$m2 = new SubNS\M2;
Домены на продажу: https://p20.ru/collection/domains-for-sale
Aisamiery
На сайте с 12.04.2015
Offline
293
#5
Dram :
С другой у меня есть опасения, а не создает ли это лишнюю ненужную нагрузку? Или же все равно все сразу попадает в кеш и пофигу сколько там use ?

Не очень понятно при чем тут use и лишняя нагрузка. У вас там наверняка стоит какая то функция автозагрузки которая подключает класс в момент использования, use никак на это не влияет, если конечно ваше ядро не грузит сразу весь код где-нибудь в единственном файле autoload.php

Dram :
И вот я не знаю - правильно это или нет? С одной стороны удобно, один контроллер на весь компонент, быстро что-то найти.

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

class CustomController extends Controller
{
    public function indexAction(UserService $userService, CustomService $customService): ResponseInterface
    {
        $collection = $customService->getItems($userService->getId());
        return $this->getView()->render('template-name', ['items' => $collection]);
    }
}
Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS

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