Столкнулась с ситуацией, когда хочется избежать говнокода, но не знаю как.
Есть пакет Laravel JSON API, есть его документация. Есть классы адаптеров, которые связываются с моделями приложения. В конструкторе указываются стратегии пагинации и классы моделей. Из-за того, что классы моделей задаются инстанциированием внутри конструктора, я не могу вынести метод конструктора в абстрактный класс, чтобы пагинация была везде одинаковая. Не могу писать в абстрактном классе такое, потому что ларавеловская Model - тоже абстрактный класс.
public function __construct(CursorStrategy $paging)
{
parent::__construct(new Model(), $paging);
}
Есть ли способ это отрефакторить такое?
Документация : Cursor-Based Pagination
Пример кода из документации, который демонстрирует проблему:
namespace App\JsonApi\Comments;
use App\Comment;
use CloudCreativity\LaravelJsonApi\Pagination\CursorStrategy;
use CloudCreativity\LaravelJsonApi\Eloquent\AbstractAdapter;
class Adapter extends AbstractAdapter
{
/**
* @param CursorStrategy $paging
*/
public function __construct(CursorStrategy $paging)
{
parent::__construct(new Post(), $paging);
}
// ...
}