احمد مصطفى14 نشر 6 نوفمبر 2022 أرسل تقرير نشر 6 نوفمبر 2022 ما هو action design pattern laravel وال repository design pattern وما الفرق بينهم وشكرا 1 اقتباس
0 Ahmed Sadek Elamine Touahria نشر 6 نوفمبر 2022 أرسل تقرير نشر 6 نوفمبر 2022 1 - توضيح حول action design pattern laravel "نمط تصميم الإجراء" هو طريقة بسيطة ولكنها نظيفة وفعالة لإعادة استخدام منطق الأعمال في Laravel. لنبدأ بتطبيق إدارة الخادم. لدى المستخدم خوادم ، ثم في يوم واحد ، يريد المستخدم أرشفة الخادم. المتحكم للقيام بذلك قد يكون: namespace App\Http\Controllers; use App\Models\Server; class ArchivedServersController extends Controller { public function store(Server $server) { $this->authorize('update', $server); $server->markAsArchived(); $server->owner->notify(new ServerArchivedNotification($server)); return $server; } } هذه طريقة Laravel نموذجية. منطق الأعمال مخفي في النموذج مثل: class Server extends Model { public function markAsArchived() { return tap($this)->update([ 'archived_at' => now(), ]); } } لنفترض الآن أن التطبيق يريد مسح وأرشفة الخوادم التي كانت غير نشطة لفترة طويلة. سيكون الأمر: class ArchiveInactiveServers extends Command { protected $signature = 'archive-inactive-servers'; public function handle() { Server::inactiveForALongTime() ->get() ->each(function ($server) { $server->markAsArchived(); $server->owner->notify(new ServerArchivedNotification($server)); }); } } بصراحة ، من وجهة نظري ، لا يزال من الجيد ترك الأمر على النحو الوارد أعلاه. الآن ، ينمو العمل ، ولأسباب معينة ، يحتاج التطبيق إلى القيام بأمرين للتحضير والانتهاء قبل / بعد وضع علامة على الخادم على أنه مؤرشف. $server->prepareToArchieve(); $server->markAsArchived(); $server->doSomethingToFinalise(); $server->owner->notify(new ServerArchivedNotification($server)); الآن مع كل تحديث قادم ، تحتاج إلى تكراره مرتين: في وحدة التحكم والأمر. إنه ليس إلزاميًا ولكن يمكن اعتبار استخراج منطق الأعمال. لننقل المنطق إلى فئة مخصصة تسمى ArchiveServer: namespace App\Actions; use App\Models\Server; use App\Notifications\ServerArchivedNotification; class ArchiveServer { public function archive(Server $server) { $server->prepareToArchieve(); $server->markAsArchived(); $server->doSomethingToFinalise(); $server->owner->notify(new ServerArchivedNotification($server)); } } نحن نطلق على هذه الفئات مثل هذه "الإجراءات". الإجراء عبارة عن فئة بسيطة ذات طريقة عامة واحدة فقط تتعامل مع منطق الأعمال. يمكنك تسميته كما تريد: فعل الإجراء ، أو التعامل ، أو حتى __invoke لاستدعائه مباشرة كدالة. ذلك يعتمد على ذوقك. يمكنك الآن تنفيذ الإجراء عبر مساعد التطبيق: class ArchivedServersController extends Controller { public function store(Server $server) { $this->authorize('update', $server); app(ArchieveServer::class)->archive($server); return $server; } } class ArchiveInactiveServers extends Command { protected $signature = 'archive-inactive-servers'; public function handle() { Server::inactiveForALongTime() ->get() ->each(fn ($server) => app(ArchieveServer::class)->archive($server)); } } 2- The Repository pattern المستودعات هي فئات أو مكونات تغلف المنطق المطلوب للوصول إلى مصادر البيانات. إنها تركز وظائف الوصول إلى البيانات المشتركة ، وتوفر إمكانية صيانة أفضل وفصل البنية التحتية أو التكنولوجيا المستخدمة للوصول إلى قواعد البيانات من طبقة نموذج المجال. إذا كنت تستخدم مخطط ربط الكائنات (ORM) مثل Laravel or django Framework ، فإن الكود الذي يجب تنفيذه يكون مبسطًا ، وذلك بفضل LINQ والكتابة القوية. يتيح لك هذا التركيز على منطق استمرارية البيانات بدلاً من التركيز على سباكة الوصول إلى البيانات. اقتباس
السؤال
احمد مصطفى14
ما هو
action design pattern laravel
وال repository design pattern
وما الفرق بينهم
وشكرا
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.