я про то что данные передаются через конструктор . Ведь можно просто в самом коде их определить того же файла
В конструктор в данном случае передаются на данные, а объект, который будет строить запросы. Это же класс репозитория - он инкапсулирует запросы к БД, но пользуется при этом моделями Eloquent.
class PortfoliosRepository extends Repository {
public function __construct(Portfolio $portfolio) {
$this->model = $portfolio;
}
// Этот метод, скорее всего, есть в базовом классе
public function find(int $id): ?Portfolio
{
return $this->model->find($id);
}
// А это пример инкапсуляции сложной логики
public function featured(): Collection
{
return $this->model
->with(['some', 'relations'])
->where('field', 'value')
->orWhere('other_field', 'value')
->orderBy('created_at')
->limit(42)
->get()
->each
->append('mutated_attribute');
}
}
Используется этот класс так:
$repository = new PortfoliosRepository(
new Portfolio // <- не какое-то существующее портфолио из БД, а "пустой" объект
);
$repository->featured();