"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > استخدام نمط طبقة الخدمة في PHP للحصول على تعليمات برمجية نظيفة وقابلة للتطوير

استخدام نمط طبقة الخدمة في PHP للحصول على تعليمات برمجية نظيفة وقابلة للتطوير

تم النشر بتاريخ 2024-11-08
تصفح:920

Using the Service Layer Pattern in PHP for Clean and Scalable Code

يعد نمط طبقة الخدمة أسلوب تصميم شائع للتعامل مع منطق الأعمال في تطبيقات PHP. من خلال فصل منطق التطبيق عن إطار العمل، نقوم بإنشاء قاعدة تعليمات برمجية قابلة للتطوير والاختبار والصيانة. في هذه المقالة، سنتعرف على أساسيات نمط طبقة الخدمة وفوائده وكيفية تنفيذه في تطبيق PHP باستخدام أمثلة عملية.

ما هو نمط طبقة الخدمة؟

يدور نمط طبقة الخدمة حول إنشاء طبقة منفصلة في تطبيقك خصيصًا لإدارة منطق الأعمال. من خلال مركزية قواعد العمل والمنطق في فئات الخدمة المخصصة، فإننا نتجنب تضخم وحدات التحكم والنماذج لدينا عن طريق نقل تفاعلات قاعدة البيانات إلى طبقة الخدمة هذه، مما يجعل التعليمات البرمجية الخاصة بنا أكثر وضوحًا وأسهل في الاختبار.

لماذا نستخدم نمط طبقة الخدمة؟

إليك بعض فوائد تطبيق نمط طبقة الخدمة في تطبيق PHP الخاص بك:

  • فصل الاهتمامات: عزل منطق الأعمال عن وحدات التحكم والنماذج، وتحسين إمكانية القراءة وقابلية الصيانة.
  • قابلية الاختبار: يصبح اختبار منطق الأعمال بشكل منفصل أسهل، حيث يتم فصل الخدمات عن إطار العمل.
  • قابلية التوسع: تستفيد التطبيقات واسعة النطاق من قواعد العمل المركزية، مما يقلل من الازدواجية عبر قاعدة التعليمات البرمجية.

تنفيذ نمط طبقة الخدمة

فلنستعرض مثالاً عن طريق إنشاء طبقة خدمة لإدارة العمليات لتطبيق اجتماعي أساسي. في هذا السيناريو، سنقوم بإنشاء فئة PostService للتعامل مع منطق الأعمال المتعلق بإنشاء المنشورات وتحديثها. سيتضمن الفصل طرقًا لإنشاء منشور، والتحقق من أذونات المستخدم، وتحديث بيانات تعريف المنشور.

الخطوة 1: تحديد فئة الخدمة

سنبدأ بإنشاء فئة PostService، والتي ستحتوي على الأساليب المطلوبة للتعامل مع الإجراءات اللاحقة. يجب أن تعيش هذه الفئة في دليل مثل التطبيق/الخدمات.

updatePostMetadata($post);

            return $post;
        });
    }

    public function updatePostMetadata(Post $post): void
    {
        $post->metadata = json_encode(['likes' => 0, 'shares' => 0]);
        $post->save();
    }
}

الخطوة 2: استخدم طبقة الخدمة في وحدة التحكم

مع إعداد فئة PostService، فلندمجها في وحدة التحكم. سيؤدي ذلك إلى إبقاء وحدة التحكم مركزة على التعامل مع طلبات واستجابات HTTP، بينما يتواجد منطق الأعمال في الخدمة.

validate([
            'title' => 'required|string|max:255',
            'content' => 'required|string',
            'user_id' => 'required|integer|exists:users,id'
        ]);

        $post = $this->postService()->createPost($validatedData);

        return response()->json($post, 201);
    }
}

الخطوة 3: اختبار طبقة الخدمة

يعد اختبار طبقة الخدمة أمرًا ضروريًا لضمان عمل منطق الأعمال بشكل صحيح. وبما أن الخدمات منفصلة عن طلبات HTTP، فيمكننا إنشاء اختبارات وحدة للتحقق من فئة PostService.

إليك نموذج اختبار لفئة PostService لدينا:

service = new PostService();
    }

    public function test_create_post_sets_initial_metadata()
    {
        $postData = [
            'title' => 'Sample Post',
            'content' => 'This is a test post content.',
            'user_id' => 1
        ];

        $post = $this->service->createPost($postData);

        $metadata = json_decode($post->metadata, true);
        $this->assertEquals(['likes' => 0, 'shares' => 0], $metadata);
    }
}

يضمن هذا الاختبار تعيين البيانات الوصفية الأولية للمنشور بشكل صحيح داخل PostService.

فئات الخدمة والمنطق الخاص بالنموذج

في أغلب الأحيان، يتم تصميم فئة خدمة مثل PostService لنموذج معين في هذه الحالة، وهو نموذج Post. يساعد هذا التركيز الخاص بالنموذج على ضمان مركزية منطق الأعمال لكل كيان في التطبيق. على سبيل المثال، تحتوي PostService على أساليب مثل createPost وupdatePostMetadata التي تعمل مباشرة على المنشورات، مع الاحتفاظ بكل المنطق المتعلق بالمنشور في مكان واحد. باتباع هذا النمط، يمكنك إنشاء فئات خدمة منفصلة (على سبيل المثال، UserService، وCommentService) لنماذج أخرى، مما يضمن تخصيص كل خدمة للبيانات وقواعد العمل الخاصة بها.

نصائح إضافية لاستخدام نمط طبقة الخدمة

  • حقن التبعيات: استخدم حقن التبعيات لتزويد المستودعات أو الخدمات الأخرى لفئات الخدمة الخاصة بك، مما يساعد على جعلها أكثر قابلية للاختبار.
  • إدارة المعاملات: عند إجراء عمليات قاعدة بيانات متعددة داخل الخدمة، استخدم معاملات قاعدة البيانات لضمان الذرية.
  • معالجة الأخطاء: تنفيذ المعالجة المناسبة للأخطاء حتى تتمكن الخدمات من التعامل مع السيناريوهات غير المتوقعة بأمان، مثل مشكلات الشبكة أو التبعيات المفقودة.

متى يجب عليك استخدام نمط طبقة الخدمة؟

يعد نمط طبقة الخدمة مثاليًا للتطبيقات المعقدة حيث يكون منطق الأعمال جوهريًا. إذا وجدت أن وحدات التحكم الخاصة بك تتعامل مع أكثر من مجرد تدفق البيانات، أو إذا كانت نماذجك مليئة بالمنطق، فقد يكون الوقت قد حان لتقديم طبقة الخدمة.

خاتمة

يعد نمط طبقة الخدمة وسيلة قوية لتنظيم منطق الأعمال الذي يكون نظيفًا وقابلاً للتطوير. من خلال مركزية المنطق في فئات الخدمة المخصصة، يمكننا إنشاء قاعدة تعليمات برمجية أكثر قابلية للصيانة والاختبار وأسهل في التوسع والتعديل. حاول تنفيذ هذا النمط في مشروعك القادم لتجربة الفوائد بشكل مباشر. برمجة سعيدة!

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/otutukingsley/using-the-service-layer-pattern-in-php-for-clean-and-scalable-code-15fb?1 إذا كان هناك أي انتهاك، من فضلك اتصل بـ [email protected]
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3