Laravel — как типизировать Illuminate\Support\Collection?
Подскажите пожалуйста, мне нужно, чтобы мой метод возвращал коллекцию, но коллекция должна иметь только бъекты заданного типа, например, ProductItem
Как это можно реализовать?
Т.е. мне нужно на основе класса Illuminate\Support\Collection получить свой класс, ProductItemCollection, в который можно будет класть только объекты типа ProductItem.
Как это можно реализовать? какие есть варианты? Каким образом можно будет задавать тип для моего контейнера?
PS: эта тема отделена от предыдущей, и они не связны.
А в чем проблема сделать кастомную коллекцию и потом переопределить её конструктор который будет валидировать входящие модели?
Код из документации:
<?php
namespace App;
use App\CustomCollection;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* Create a new Eloquent Collection instance.
*
* @param array $models
* @return \Illuminate\Database\Eloquent\Collection
*/
public function newCollection(array $models = [])
{
return new CustomCollection($models);
}
}