Я наткнулся на PHP Fractal, который показывает, что целью является обеспечение формата вывода между хранилищем и выходом (клиентом).
Я работаю с API уже более года, и я создал функции toArray() для большинства моих объектов, которые я хочу вернуть. С помощью Eloquent вы можете перегрузить функцию toArray() и украсить оттуда также, если вы привязали свою модель сущности к модели Eloquent.
Пример:
public function toArray()
{
$array = parent::toArray();
$array['extra'] = true;
...
return $array;
}
Если Apis должен быть быстрым и легким, какие преимущества делает PHP League Fractal над реализацией toArray() или функцией формата ($ data) из репозитория/менеджера? Это связано с ООП? если так, может кто-нибудь показать пример?
Для меня преимущества следующие:
Accept
, который может быть сложнее с массивом (вам нужно будет его перестроить, и, конечно же, вы не хотите, чтобы этот беспорядок в вашем контроллере).Я думаю, что первые два не являются исключительными для Fractal, но будут целью иметь любую абстракцию для форматирования ответов.
Что для меня непонятно, где же что-то вроде Фрактала? Я большой поклонник представления о том, что модель должна быть способна представлять себя, как и с __toString
. Но опять же можно утверждать, что это скорее проблема презентации, чем модель. С использованием фрактальной разбивки на страницы поддержка встраивания становится еще менее ясной, потому что (для меня) немного отстает от самой презентации.
Скорее всего, конечно, актуально, но вы можете оптимизировать в другом месте, например, путем кэширования всего содержимого ответа на что-то вроде лака или какого-либо пакета laravel, который выполняет аналогичную роль, если у вас нет инфраструктуры (остерегайтесь, что она не применима для каждого использования случай, авторизованные или разнообразные ответы, специфичные для пользователя).
Что касается примеров, я могу рекомендовать два, помимо документов пакета:
Хотелось бы увидеть некоторые записи о том, как что-то вроде Fractal может вписаться в более крупный, структурированный проект.