я должен использовать новые ключевые слова в контроллерах Laravel - PullRequest
0 голосов
/ 20 ноября 2018

Я знаю DI, основополагающие принципы, заводские шаблоны, шаблоны адаптеров и многое другое.Теперь предположим, что я создаю приложение Laravel, и оно будет огромным.Допустим, у меня есть постконтроллер, который является ресурсом и имеет методы CRUD.Теперь допустим, что в функциях этого контроллера у меня есть пост-модель, и я использую ее для извлечения данных из базы данных.У меня есть функция хранилища, в которой я создаю новый Post () и затем помещаю его в базу данных.

1) Является ли хорошей практикой иметь модель Post непосредственно в функции PostController и также использовать новый Post ()?Что в этом плохого?Я знаю, что таким образом я не использую внедрение зависимостей и шаблоны, но все же, почему это плохо?Как вы знаете, я все еще могу издеваться над объектом без внедрения зависимостей, поскольку в laravel есть так много удивительных возможностей тестированияТогда почему так плохо писать новое ключевое слово в функциях контроллера, а также напрямую использовать модель Post?

1 Ответ

0 голосов
/ 20 ноября 2018

Чтобы дать вам один ответ на ваш вопрос.Существует концепция «Тонкие контроллеры, толстые модели».Раньше я откладывал создание объекта до самого объекта с помощью Именованных Конструкторов .

class UserController 
{
    public function create(UserCreateRequest $request)
    {
        $user = User::createFromRequest($request);

        // do anything else
    }
}

class User
{
    public static function createFromRequest(UserCreateRequest $request)
    {
        $user = new User;
        $user->first_name = $request->first_name;
        // ...
        $user->save();

        return $user;
    }
}

. При этом вы можете иметь более различных конструкторов, таких как User::createAdmin и его тестируемый.Вам просто нужно издеваться над запросом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...