توفر الحزمة غلافًا لطيفًا وسهلاً حول Fractal لاستخدامه في تطبيقات Laravel الخاصة بك. إذا كنت لا تعرف ما يفعله Fractal، قم بإلقاء نظرة خاطفة على المقدمة. باختصار، يعتبر Fractal مفيدًا جدًا لتحويل البيانات قبل استخدامها في واجهة برمجة التطبيقات.
يمكن تحويل استخدام البيانات الفراكتلية على النحو التالي:
استخدم LeagueFractalManager;استخدم LeagueFractalResourceCollection;$books = [ ['id' => 1, 'title' => 'Hogfather', 'characters' => [...]], ['id' => 2, 'title' => 'لعبة قتل الجميع', 'الشخصيات' => [...]] ];$manager = new Manager();$resource = new Collection($books, new BookTransformer());$manager->parseIncludes('characters');$manager->createData($resource)->toArray() ;
هذه الحزمة تجعل هذه العملية أسهل قليلاً:
كسورية () ->المجموعة(كتب $) ->تحويل مع(جديد BookTransformer()) ->تضمين الأحرف () ->toArray();
سيكون من دواعي سرور عشاق الواجهات معرفة أنه تم توفير الواجهة:
كسورية::collection($books)->transformWith(new BookTransformer())->toArray();
هناك أيضًا صيغة قصيرة جدًا متاحة لتحويل البيانات بسرعة:
fractal($books, new BookTransformer())->toArray();
يمكنك التحويل مباشرةً من مجموعة Laravel أيضًا:
Collect($books)->transformWith(new BookTransformer());
يعد التحويل مباشرة من مجموعة Laravel مفيدًا بشكل خاص لنتائج Eloquent:
Users::all()->transformWith(new UserTransformer())->toArray();
Spatie هي وكالة تصميم مواقع الإنترنت مقرها في أنتويرب، بلجيكا. ستجد نظرة عامة على جميع مشاريعنا مفتوحة المصدر على موقعنا.
نحن نستثمر الكثير من الموارد في إنشاء أفضل الحزم مفتوحة المصدر في فئتها. يمكنك دعمنا عن طريق شراء أحد منتجاتنا المدفوعة.
نحن نقدر بشدة إرسالك لنا بطاقة بريدية من مسقط رأسك، مع ذكر الحزمة (الحزم) التي تستخدمها. ستجد عنواننا على صفحة الاتصال لدينا. ننشر جميع البطاقات البريدية المستلمة على جدار البطاقات البريدية الافتراضية لدينا.
يمكنك سحب الحزمة عبر الملحن:
يتطلب الملحن spatie/laravel-fractal
ستقوم الحزمة بتسجيل نفسها تلقائيًا.
إذا كنت تريد تغيير المُسلسل الافتراضي، أو مُرقّم الصفحات الافتراضي، أو فئة الفركتل الافتراضية SpatieFractalFractal
فيجب عليك نشر ملف التكوين:
بائع PHP الحرفي: نشر --provider = "SpatieFractalFractalServiceProvider"
إذا كنت تقوم بالترقية إلى Laravel 5.5، فيجب إعادة تسمية ملف التكوين الحالي من laravel-fractal.php إلى fractal.php
وهذه محتويات الملف المنشور:
return [/* * المُسلسل الافتراضي الذي سيتم استخدامه عند إجراء التحويل. * قد يتم تركه فارغًا لاستخدام الخيار الافتراضي لـ Fractal. يمكن أن يكون هذا إما سلسلة * أو فئة فرعية LeagueFractalSerializerSerializerAbstract. */'default_serializer' => '',/* مرقّم الصفحات الافتراضي الذي سيتم استخدامه عند إجراء التحويل. * قد يتم تركه فارغًا لاستخدام الخيار الافتراضي لـ Fractal. يمكن أن يكون هذا إما سلسلة * أو فئة فرعية من LeagueFractalPaginatorPaginatorInterface. */'default_paginator' => '',/* * سيستخدم LeagueFractalSerializerJsonApiSerializer هذه القيمة * كبادئة للروابط التي تم إنشاؤها. اضبط على `null` لتعطيل هذا. */'base_url' => null,/* * إذا كنت ترغب في تجاوز أو توسيع مثيل SpatieFractalFractal الافتراضي * قم بتوفير اسم الفئة التي تريد استخدامها. */'fractal_class' => SpatieFractalFractal::class,'auto_includes' => [/* * في حالة تمكين Fractal، سيضيف تلقائيًا أسماء الأشخاص * الموجودة في معلمة الطلب "include". */'enabled' => true,/* * اسم المفتاح في الطلب حيث يجب أن نبحث عن التضمينات المراد تضمينها. */'request_key' => 'تضمين'، ],'auto_excludes' => [/* * إذا تم تمكين Fractal فسوف يضيف تلقائيًا أسماء المستبعدين * الموجودة في معلمة طلب `الاستبعاد`. */'enabled' => true,/* * اسم المفتاح في الطلب حيث يجب أن نبحث عن الاستثناءات لاستبعادها. */'request_key' => 'استبعاد'، ],'auto_fieldsets' => [/* * إذا تم تمكين Fractal فسوف يضيف تلقائيًا مجموعات الحقول التي توجد أسماؤها في معلمة طلب `الحقول`. */'enabled' => true,/* * اسم المفتاح في الطلب، حيث يجب أن نبحث عن مجموعات الحقول لتحليلها. */'request_key' => 'الحقول'، ]، ];
ارجع إلى وثائق spatie/fractalistic
لمعرفة جميع الأساليب التي توفرها هذه الحزمة.
في جميع أمثلة التعليمات البرمجية، يمكنك استخدام fractal()
بدلاً من Fractal::create()
.
لإرجاع استجابة ببيانات json، يمكنك القيام بذلك في تطبيق Laravel.
$books = fractal($books, new BookTransformer())->toArray();return Response()->json($books);
يمكن لطريقة respond()
في فئة Fractal أن تجعل هذه العملية أكثر بساطة قليلاً.
إرجاع كسورية($books, new BookTransformer())->respond();
يمكنك تمرير رمز الاستجابة كمعلمة أولى واختياريًا بعض الرؤوس كمعلمة ثانية
إرجاع كسورية($books, new BookTransformer())->respond(403, ['a-header' => 'a value','another-header' => 'قيمة أخرى', ]);
يمكنك تمرير خيارات تشفير json كمعلمة ثالثة:
return fractal($books, new BookTransformer())->respond(200, [], JSON_PRETTY_PRINT);
يمكنك أيضًا تعيين رمز الحالة والرؤوس باستخدام رد اتصال:
استخدم IlluminateHttpJsonResponse;return fractal($books, new BookTransformer())->respond(function(JsonResponse $response) {$response->setStatusCode(403) ->الرأس ("الرأس"، "القيمة") ->withHeaders(['another-header' => 'قيمة أخرى','et-another-header' => 'قيمة أخرى', ]); });
يمكنك إضافة طرق إلى فئة Fractal باستخدام سمة Laravel's Macroable. تخيل أنك تريد إضافة بعض الإحصائيات إلى البيانات الوصفية لطلبك، ويمكنك القيام بذلك دون تشويش التعليمات البرمجية الخاصة بك:
استخدم SpatieFractalFractal؛ Fractal::macro('stats', function ($stats) {// قم بتحويل الإحصائيات التي تم تمريرها حسب الضرورة هناreturn $this->addMeta(['stats' => $stats]); });fractal($books, new BookTransformer())->stats(['runtime' => 100])->respond();
يمكنك تشغيل الأمر make:transformer
لإنشاء محول وهمي بسرعة. افتراضيًا، سيتم تخزينه في دليل appTransformers
.
أعد تسمية ملف التكوين الخاص بك من laravel-fractal
إلى fractal
تم تقديم v3
لاستبدال league/fractal
بـ spatie/fractalistic
. تم إسقاط دعم Lumen. يجب أن تكون قادرًا على ترقية تطبيق Laravel من v2
إلى v3
دون أي تغييرات في التعليمات البرمجية.
في معظم الحالات، يمكنك فقط الترقية إلى v2
دون إجراء أي تغييرات أو إجراء تغييرات طفيفة على التعليمات البرمجية الخاصة بك:
تمت إعادة تسمية resourceName
إلى withResourceName
.
السبب الرئيسي وراء وضع علامة على v2
من هذه الحزمة هو أن الإصدار 0.14 من الفراكتل الأساسي بواسطة الدوري يحتوي على تغيير جذري. إذا كنت تستخدم LeagueFractalSerializerJsonApiSerializer
في الإصدار الثاني، فسيحتوي مفتاح links
على self
first
next
last
.
الرجاء مراجعة سجل التغيير لمزيد من المعلومات عما تغير مؤخرًا.
اختبار الملحن $
يرجى الاطلاع على المساهمة للحصول على التفاصيل.
إذا وجدت خطأً يتعلق بالأمان، فيرجى إرسال بريد إلكتروني إلى العنوان [email protected] بدلاً من استخدام أداة تعقب المشكلات.
فريك فان دير هيرتن
جميع المساهمين
رخصة معهد ماساتشوستس للتكنولوجيا (MIT). يرجى الاطلاع على ملف الترخيص لمزيد من المعلومات.