اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

فكرة نمط التوزيعة Repository pattern في أساسها هي فقط في فصل طبقة البيانات Data layer عن منطق العمل bussiness logic وباقي التطبيق، ويتم ذلك بوساطة واجهات تقوم بتجريد طلب البيانات وما الى ذلك، فبدل أن نكتب: 

public function index()
{
  $tasks = Task::all();

  return view('tasks.index', ['tasks' =>  $tasks]);
}

نكتب: 

class TaskController extends Controller
{
    private TaskRepository $taskRepository;

    public function __construct(TaskRepositoryInterface $taskRepository)
    {
        $this->taskRepository = $taskRepository;
    }

    public function index()
    {
        $tasks = $this->taskRepository->getAllTasks();

        return view('tasks.index', ['tasks' =>  $tasks]);
    }

بحيث يكون كلاس التوزيعة المعنية كـ: 

<?php

namespace App\Repositories;

use App\Interfaces\TaskRepositoryInterface;
use App\Models\Task;

class TaskRepository implements TaskRepositoryInterface
{
    public function getAllTasks()
    {
        return Task::all();
    }

انتبه الى انها تقوم بتطبيق واجهة TaskRepositoryInterface، هي الأخرى ستحتاج تصريح التوابع المعنية:

?php

namespace App\Interfaces;

interface TaskRepositoryInterface
{
    public function getAllTasks();
}

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

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

بتاريخ 1 ساعة قال ابراهيم بازي:

وهل هو من المبادئ المهم دراستها ذاتيا ؟

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

  • 1
نشر

أنماط التصميم يتم شرحها في دورة علوم الحاسوب أما في دورة تطوير تطبيقات الويب باستخدام لغة PHP لا أعتقد أنه سوف يتم شرح repository design pattern في الدورة ، وبخصوص أهمية دراسته  ،يعتبر فهم نمط Repository Design Pattern مفيدًا للمطورين الذين يعملون على تطبيقات ذات حجم كبير أو معقدة، حيث يمكن أن يؤدي استخدام النمط إلى تبسيط الهندسة البرمجية وإعادة الاستخدام أسهل. 

  • 1
نشر

عليك بتعلم الأنماط الهامة أولاً، ففي مشاريع PHP ولارافيل (Laravel)، هناك العديد من أنماط التصميم (Design Patterns) وهي بالترتيب:

Model-View-Controller (MVC)

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

Dependency Injection (DI)

يهدف إلى تقليل الاعتمادية الزائدة على الكائنات وتعزيز إعادة استخدامها واختبارها بسهولة، وفي لارافيل، تستطيع استخدام حاويات الحقن (Containers) لتنفيذ Dependency Injection وإدارة تبعيات الكائنات.

Repository

نمط Repository يوفر واجهة للتعامل مع البيانات، ويتم استخدامه لفصل طبقة البيانات عن طبقة الأعمال (Business Layer)، وبإمكانك استخدام ذلك النمط في لارافيل للتفاعل مع قواعد البيانات وتنفيذ العمليات المتعلقة بالبيانات.

Singleton

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

وإذا أردت قراءة كتابة فأنصحك بقراءة Head First design patterns.

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...