احسان رضایی

یک توسعه دهنده

مدیریت Route های لاراول در پروژه های بزرگ

در PHP , laravel , / تاریخ ارسال 02-12-1401 / 0 نظر / آخرین ویرایش 01-12-1402

laravel routes

روت‌ها/Routes در پروژه های بزرگ لاراولی ممکن هست زیاد و شلوغ بشن، خوانایی پایین بیاد و هنگام ویرایش دچار سردرگمی بشین. در این مطلب سه روش برای حل این مشکل رو توضیح میدم و شما میتونید با توجه به پروژه و ارزیابی خودتون یکی رو انتخاب کنید.

استفاده از RouteServiceProvider

این Provider مسیر های تعریف شده رو در routes/web.php و routes/api.php لود میکنه. میتونید روت‌ها رو به فایل‌های کوچک‌تر تبدیل و در RouteServiceProvider تعریفشون کنید. دقیقا مثل کاری که به طور پیشفرض با web.php و api.php انجام داده. در مثال زیر متد بوت RouteServiceProvider رو ویرایش و posts رو اضافه کردم. در routes/posts.php مسیر های مربوط به ماژول post من قرار داره.

    public function boot()
    {
        $this->configureRateLimiting();

        $this->routes(function () {
            Route::middleware('api')
                ->prefix('api')
                ->group(base_path('routes/api.php'));

            Route::middleware('web')
                ->group(base_path('routes/web.php'));

            // new routes.
            Route::middleware('api')
                ->group(base_path('routes/posts.php'));
        });
    }

به نظرم این روش پیچیدگی روت‌های زیاد رو حل میکنه اما یک پیچیدگی جدید به وجود میاره. شما و همکارانتون باید بدونید از یک روش و محل دیگه ای برای لود مسیرها استفاده کردین. در صورتی که توقع میره روت‌ها و تعریفشون در پوشه routes باشن.

 

تعریف فایل روت‌ها در routes/web.php یا routes/api.php

به عنوان یک روش ساده و واضح‌تر می‌تونید posts.php مثال قبل رو داخل دو فایل پیش‌فرض لاراول require کنید.

// `routes/api.php` file
 
require __DIR__ . '/resource/posts.php';
require __DIR__ . '/resource/orders.php';
require __DIR__ . '/resource/payments.php';
require __DIR__ . '/resource/deliveries.php';

// ...

 

استفاده از Route Groups

همون روش قبلی با این تفاوت که جای require از Route Groups استفاده میشه.

// `routes/api.php` file
 
Route::prefix('posts')->as('posts:')->middleware(['auth'])->group(
    base_path('routes/resources/posts.php'),
);
 
Route::prefix('orders')->as('orders:')->middleware(['auth'])->group(
    base_path('routes/resources/orders.php'),
);
 
// ...

پیشنهاد

کتاب‌ها

کتاب الگوهای طراحی به بیان ساده(design patterns / دیزاین پترن)

در مهندسی نرم افزار، design patterns(الگوهای طراحی) راه حل‌های قابل استفاده برای مشکلاتی هستند که معمولاً در طراحی نرم‌افزار اتفاق می افتند.

طرح های از پیش ساخته شده‌ای که می‌توانید برای حل مشکلات آن‌ها را سفارشی کنید. شما نمی‌توانید یک الگو را با جستجو در stackoverflow پیدا و در برنامه خود کپی کنید. الگو ها یک قطعه کد خاص نیستند، مفاهیم کلی برای حل مشکلات خاص هستند. شما باید با درک این مفاهیم آن‌ها را در برنامه خود پیاده‌سازی کنید.

کتاب refactoring / ریفکتورینگ

Refactoring مجموعه‌ای از تکنیک‌هاست که به منظور اصلاح و بهبود کدهای قبلی بدون تغییر در عملکرد و رفتارشان جهت خوانایی، کارامدی و قابلیت نگهداری بیشتر انجام می‌شود.

در کتاب Refactoring اثر Martin Fowler نوشته شده: refactoring تکنیک مرتب/منظم سازی برای تجدید ساختار کد موجود است. تغییر ساختار داخلی کد بدون تغییر رفتار خارجی آن.

refactoring یک سرمایه‌گذاری و راه حلی برای مقابله با کد کثیف و بدهی فنی است که باعث کاهش هزینه‌های توسعه نرم‌افزار در آینده خواهد شد.

ارسال نظر