spacenear
@spacenear
React Web Developer

Нормально ли такое решение инъекции с архитектурной точки зрения?

Только начинаю вникать в ООП. Подскажите пожалуйста нормально ли так делать или принято как то по другому?
Вот есть у меня класс репозитория для продуктов на сайте

class ProductRepository
  {
    private $product; // Сюда попадает App\Entities\Product
    
    public function __construct($product)
    {
      $this->product = $product;
    }
    
    public function get($id)
    {
      $data = DB::selectOne('SELECT * FROM products WHERE id = ?', [$id]);
      
      if ($data) {
        $data = $this->joinDependencies($data);
        return new $this->product($data); // Тут я создаю новый объект сущности, заполненный данными и отдаю
      }
      
      return null;
    }
  }


И есть запись в сервис контейнер
Меня смущает что тут передается просто название, хотя в других местах инджектится уже готовый объект, но мне тут это не подходит, так как нужно будет создавать новый внутри.

$this->app->singleton(ProductRepository::class, function () {
    return new ProductRepository(Product::class);
});


Вообще я примерно правильно делаю или есть какие то другие более лучшие способы?
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы