В чем смысл передачи данных таким образом?
я про то что данные передаются через конструктор . Ведь можно просто в самом коде их определить того же файлаВ конструктор в данном случае передаются на данные, а объект, который будет строить запросы. Это же класс репозитория - он инкапсулирует запросы к БД, но пользуется при этом моделями 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();
Использовать public property хорошо только для какого-нибудь DTO, в остальных случаях это приведет к краху. Лучше использовать для этого передачу данных в конструкторе или сеттеры.