Только начинаю вникать в ООП. Подскажите пожалуйста нормально ли так делать или принято как то по другому?
Вот есть у меня класс репозитория для продуктов на сайте
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);
});
Вообще я примерно правильно делаю или есть какие то другие более лучшие способы?