Использование моделей против создания и связывания классов - PullRequest
0 голосов
/ 03 января 2019

Я не понимаю идею связывания классов в сервис-провайдере. Я читаю статьи о поставщиках услуг и контейнерах Laravel. Я понимаю, что Service Provider - это способ организации привязок сервисных объектов к IoC, полезный, когда ваше приложение довольно большое. Давайте посмотрим на этот случай. Я создал 4 класса:

class Person
{
    public $name;
    public $surname;

    public function __construct($name, $surname)
    {
        $this->name = $name;
        $this->surname = $surname;
    }

  }


class Car
{

public $model;


public function __construct($model)
{
    $this->model = $model;
}
}


class Adres
{

    public function __construct($street, $city)
    {
        $this->street = $street;
        $this->city = $city;
    }

}

class PremiumClient
{

    public function __construct(Person $p, Car $c, Adres $a)
    {
        $this->person = $p;
        $this->car = $c;
        $this->adres = $p;
    }
}

Как видите, я пытаюсь добавить три зависимости в класс PremiumClient. Я могу добиться этого, создав 4 модели, присоединяясь к ним, используя красноречивые отношения. Итак, почему рекомендуется связывать классы в сервис-провайдере следующим образом:

class AppServiceProvider extends ServiceProvider
{

    public function boot()
    {
        Schema::defaultStringLength(191);
        $this->app->bind('Car', function ($app, $p) {
            return new Car($p[0]);
        });

        $this->app->bind('Adres', function ($app, $p) {
            return new Adres($p[0], $p[1]);
        });

        $this->app->bind('Person', function ($app, $p) {
            return new Person($p[0], $p[1]);
        });

        $this->app->bind('Premium', function ($app, $p) {
            return new Premium(App::make('Person'),App::make('Car'),App::make('Adres'));
        });
}

Я не могу понять, каковы преимущества связывания классов, когда вы можете использовать модели для достижения той же цели. Когда я должен использовать модели, а когда создавать класс и связывать его? Пожалуйста, помогите.

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