แพ็คเกจนี้เป็น wrapper ที่สวยงามและใช้งานง่ายรอบๆ Fractal สำหรับใช้ในแอปพลิเคชัน Laravel ของคุณ หากคุณไม่รู้ว่า Fractal ทำอะไรได้บ้าง ลองดูข้อมูลเบื้องต้นของมัน กล่าวสั้นๆ ว่า Fractal มีประโยชน์มากในการแปลงข้อมูลก่อนที่จะนำไปใช้ใน API
การใช้ข้อมูลเศษส่วนสามารถแปลงได้ดังนี้:
ใช้ LeagueFractalManager; ใช้ LeagueFractalResourceCollection;$books = [ ['id' => 1, 'title' => 'Hogfather', 'ตัวละคร' => [...]], ['id' => 2, 'title' => 'เกมแห่งการฆ่าทุกคน', 'ตัวละคร' => [...]] ];$manager = new Manager();$resource = new Collection($books, new BookTransformer());$manager->parseIncludes('Characters');$manager->createData($resource)->toArray() ;
แพ็คเกจนี้ทำให้กระบวนการนั้นง่ายขึ้นเล็กน้อย:
เศษส่วน() -> คอลเลกชัน ($ หนังสือ) ->transformWith(BookTransformer ใหม่()) -> รวมตัวละคร () ->toArray();
ผู้ชื่นชอบอาคารจะดีใจที่รู้ว่ามีซุ้มไว้ให้บริการ:
เศษส่วน::collection($books)->transformWith(bookTransformer ใหม่())->toArray();
นอกจากนี้ยังมีไวยากรณ์ที่สั้นมากสำหรับการแปลงข้อมูลอย่างรวดเร็ว:
เศษส่วน ($ หนังสือ, BookTransformer ใหม่ ()) -> toArray ();
คุณสามารถแปลงโดยตรงจากคอลเลกชัน Laravel ได้เช่นกัน:
รวบรวม($หนังสือ)->transformWith(BookTransformerใหม่());
การแปลงจากคอลเลกชัน Laravel มีประโยชน์อย่างยิ่งสำหรับผลลัพธ์ Eloquent:
ผู้ใช้::ทั้งหมด()->transformWith(UserTransformer ใหม่())->toArray();
Spatie เป็นเอเจนซี่ออกแบบเว็บไซต์ที่ตั้งอยู่ในเมืองแอนต์เวิร์ป ประเทศเบลเยียม คุณจะพบภาพรวมของโครงการโอเพ่นซอร์สทั้งหมดของเราบนเว็บไซต์ของเรา
เราลงทุนทรัพยากรจำนวนมากเพื่อสร้างแพ็คเกจโอเพ่นซอร์สที่ดีที่สุดในระดับเดียวกัน คุณสามารถสนับสนุนเราได้โดยการซื้อหนึ่งในผลิตภัณฑ์ที่ต้องชำระเงินของเรา
เราขอขอบคุณอย่างยิ่งที่คุณส่งโปสการ์ดจากบ้านเกิดของคุณถึงเรา โดยระบุว่าคุณใช้แพ็คเกจใดของเรา คุณจะพบที่อยู่ของเราในหน้าติดต่อของเรา เราเผยแพร่โปสการ์ดที่ได้รับทั้งหมดบนวอลล์โปสการ์ดเสมือนของเรา
คุณสามารถดึงแพ็คเกจผ่านผู้แต่ง:
ผู้แต่งต้องการ spatie/laravel-fractal
แพ็คเกจจะลงทะเบียนเองโดยอัตโนมัติ
หากคุณต้องการเปลี่ยนซีเรียลไลเซอร์เริ่มต้น ตัวแบ่งหน้าเริ่มต้น หรือคลาสเศษส่วนเริ่มต้น SpatieFractalFractal
คุณต้องเผยแพร่ไฟล์กำหนดค่า:
ผู้ขายช่างฝีมือ php: เผยแพร่ --provider = "SpatieFractalFractalServiceProvider"
หากคุณกำลังอัปเกรดเป็น Laravel 5.5 ไฟล์กำหนดค่าที่มีอยู่ควรเปลี่ยนชื่อจาก laravel-fractal.php เป็น fractal.php
นี่คือเนื้อหาของไฟล์ที่เผยแพร่:
return [/* * Serializer เริ่มต้นที่จะใช้เมื่อทำการแปลง * อาจเว้นว่างไว้เพื่อใช้ค่าเริ่มต้นของ 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 จะเพิ่มชุดฟิลด์ที่มีชื่อ * ปรากฏในพารามิเตอร์คำขอ `fields` โดยอัตโนมัติ */'enabled' => true,/* * ชื่อของคีย์ในคำขอ ซึ่งเราควรมองหาชุดฟิลด์ที่จะแยกวิเคราะห์ */'request_key' => 'ฟิลด์', - -
โปรดดูเอกสาร spatie/fractalistic
เพื่อเรียนรู้วิธีการทั้งหมดที่แพ็กเกจนี้มีให้
ในตัวอย่างโค้ดทั้งหมด คุณอาจใช้ fractal()
แทน Fractal::create()
หากต้องการตอบกลับด้วยข้อมูล json คุณสามารถทำได้ในแอป Laravel
$books = fractal($books, New Transformer())->toArray();return response()->json($books);
เมธอด respond()
ในคลาส Fractal สามารถทำให้กระบวนการนี้คล่องตัวขึ้นอีกเล็กน้อย
กลับเศษส่วน ($ หนังสือ, BookTransformer ใหม่ ()) -> ตอบกลับ ();
คุณสามารถส่งโค้ดตอบกลับเป็นพารามิเตอร์ตัวแรกและอาจมีส่วนหัวบางส่วนเป็นพารามิเตอร์ตัวที่สองก็ได้
return fractal($books, new BookTransformer())->respond(403, ['a-header' => 'a value','another-header' => 'ค่าอื่น', -
คุณสามารถส่งตัวเลือกการเข้ารหัส json เป็นพารามิเตอร์ตัวที่สามได้:
คืนเศษส่วน ($ หนังสือ, BookTransformer ใหม่ ()) -> ตอบกลับ (200, [], JSON_PRETTY_PRINT);
คุณยังสามารถตั้งรหัสสถานะและส่วนหัวโดยใช้การโทรกลับ:
ใช้ IlluminateHttpJsonResponse; return fractal($books, new BookTransformer())->respond(function(JsonResponse $response) {$response->setStatusCode(403) ->header('a-header', 'a value') ->withHeaders(['another-header' => 'another value','yet-another-header' => 'ยังมีค่าอื่น', - -
คุณสามารถเพิ่มเมธอดให้กับคลาส Fractal ได้โดยใช้คุณสมบัติ Macroable ของ Laravel ลองนึกภาพว่าคุณต้องการเพิ่มสถิติให้กับข้อมูลเมตาของคำขอของคุณ คุณสามารถทำได้โดยไม่ทำให้โค้ดของคุณเกะกะ:
ใช้ SpatieFractalFractal; Fractal::macro('stats', function ($stats) {// แปลงสถิติที่ส่งผ่านตามความจำเป็น กลับมาที่ $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
ของแพ็คเกจนี้จึงถูกแท็กก็เนื่องมาจาก v0.14 ของ Fractal ที่สำคัญจากลีกมีการเปลี่ยนแปลงครั้งใหญ่ หากคุณใช้ LeagueFractalSerializerJsonApiSerializer
ในเวอร์ชัน 2 links
จะมี self
, first
, next
และ last
โปรดดู CHANGELOG สำหรับข้อมูลเพิ่มเติมว่ามีอะไรเปลี่ยนแปลงเมื่อเร็วๆ นี้
การทดสอบผู้แต่ง $
โปรดดูการมีส่วนร่วมเพื่อดูรายละเอียด
หากคุณพบข้อบกพร่องเกี่ยวกับการรักษาความปลอดภัย โปรดส่งอีเมลไปที่ [email protected] แทนการใช้ตัวติดตามปัญหา
ฟรีค ฟาน เดอร์ แฮร์เทน
ผู้มีส่วนร่วมทั้งหมด
ใบอนุญาตเอ็มไอที (MIT) โปรดดูไฟล์ใบอนุญาตสำหรับข้อมูลเพิ่มเติม