فيما يلي مثال خطوة بخطوة حول كيفية إنشاء كائنات نقل البيانات (DTOs) باستخدام Laravel Data:
للبدء، قم بتثبيت حزمة البيانات spatie/laravel باستخدام Composer. تساعد هذه الحزمة في إنشاء DTOs وإدارة البيانات بكفاءة.
composer require spatie/laravel-data
بعد تثبيت الحزمة، يمكننا إنشاء فئة DTO للتعامل مع نقل البيانات. لنفترض أن لدينا كيان مستخدم، ونريد إنشاء DTO لنقل بيانات المستخدم.
قم بتشغيل الأمر Artisan التالي لإنشاء فئة DTO جديدة:
php artisan make:data UserData
سيؤدي هذا إلى إنشاء فئة UserData داخل دليل التطبيقات/البيانات.
الآن، دعنا نقوم بتحرير فئة UserData لتحديد الخصائص وأنواع البيانات التي تتوقعها لـ DTO الخاص بك.
namespace App\Data; use Spatie\LaravelData\Data; class UserData extends Data { public function __construct( public string $name, public string $email, public string $address, public ?string $phone = null // Optional phone field ) {} }
الآن بعد إنشاء UserData DTO، يمكننا استخدامه داخل وحدة التحكم لدينا للتعامل مع البيانات الواردة، وتحويلها، وتمريرها بين طبقات التطبيق.
namespace App\Http\Controllers; use App\Data\UserData; use App\Models\User; use Illuminate\Http\Request; class UserController extends Controller { public function store(Request $request) { // Validate the incoming request data $validatedData = $request->validate([ 'name' => 'required|string', 'email' => 'required|email', 'address' => 'required|string', 'phone' => 'nullable|string', ]); // Create a UserData DTO $userData = UserData::from($validatedData); // You can now access $userData->name, $userData->email, etc. User::create([ 'name' => $userData->name, 'email' => $userData->email, 'address' => $userData->address, 'phone' => $userData->phone, ]); return response()->json(['message' => 'User created successfully']); } }
يمكنك استخدام DTO لتحويل البيانات عند إرجاع الاستجابات أيضًا. دعونا نعدل طريقة العرض في UserController لإرجاع بيانات المستخدم من خلال DTO.
public function show(User $user) { // Convert the User model to UserData DTO $userData = new UserData( name: $user->name, email: $user->email, address: $user->address, phone: $user->phone ); return response()->json($userData); }
إذا كنت تعمل مع مجموعات من البيانات، مثل جلب قائمة المستخدمين، فإن حزمة DTO توفر طريقة بسيطة للتعامل مع المجموعات أيضًا.
public function index() { $users = User::all(); // Convert the collection of User models to a collection of UserData DTOs $userCollection = UserData::collection($users); return response()->json($userCollection); }
تسمح حزمة بيانات spatie/laravel بتخصيص التحويل، على سبيل المثال، إعادة تسمية السمات أو إضافة حقول محسوبة.
class UserData extends Data { public function __construct( public string $name, public string $email, public string $address, public ?string $phone = null ) {} // Add a custom method to compute a full contact string public function fullContact(): string { return "{$this->name} ({$this->email})"; } }
الآن، يمكنك استخدام fullContact() للحصول على سلسلة منسقة مخصصة عند العمل مع DTO.
يمكنك إضافة قواعد التحقق مباشرة في DTO باستخدام ميزة قواعد Laravel Data.
namespace App\Data; use Spatie\LaravelData\Attributes\Validation\Email; use Spatie\LaravelData\Attributes\Validation\Required; use Spatie\LaravelData\Data; class UserData extends Data { public function __construct( #[Required] public string $name, #[Email] public string $email, public string $address, public ?string $phone = null ) {} }
في هذا البرنامج التعليمي العملي، اكتشفنا كيفية إنشاء واستخدام كائنات نقل البيانات (DTOs) باستخدام Laravel Data. باستخدام نمط DTO، يمكنك إدارة بياناتك وتحويلها بشكل نظيف، مما يضمن فصل الاهتمامات بين طبقات التطبيق الخاص بك، مع تسهيل صيانة التعليمات البرمجية. تعمل حزمة البيانات المكانية/laravel على تبسيط إدارة DTO، مما يوفر ميزات سهلة الاستخدام لكل من المطورين والتطبيقات واسعة النطاق.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3