Anophel-آنوفل 20 بهترین روش، نکته و ترفند لاراول برای استفاده در سال 2024

20 بهترین روش، نکته و ترفند لاراول برای استفاده در سال 2024

انتشار:
3

لاراول یک فریموک محبوب PHP است که بسیاری از توسعه دهندگان PHP از آن استفاده می کنند. لاراول یک چارچوب وب با کاربری آسان است که به شما کمک می‌کند تا وب‌سایت‌ها و برنامه‌های تحت وب قابل توسعه مبتنی بر PHP را در مقیاس ایجاد کنید. در این مقاله می خواهیم با بهترین شیوه ها و نکته ها در لاراول در سال 2024 آشنا شویم.

برای اکثر پروژه های لاراول، بهترین روش ها را می توان در دو نکته خلاصه کرد:


به پیش فرض ها بچسبید؛
تا حد امکان کار را به چارچوب بسپارید.


فرقی نمی‌کند لاراول 11، 10 یا 9 را اجرا می‌کنید، بیایید با جزئیات ببینیم که چگونه می‌توانم با هزاران نکته و ترفند به شما در بهبود هر پایگاه کد کمک کنم.


به هر حال، علاوه بر این مقاله، مقاله های زیر نیز می تواند در توسعه اپلیکیشن لاراول شما کمک کند.:

آشنایی با لاراول Sail و داکر در لاراول

آشنایی با توسعه تست محور در لاراول

آشنایی با تست نوسی در لارول با Pest

آشنایی با میکروسرویس ها در لاراول

آشنایی با کد نویسی تمیز در لاراول

بهترین روش ها، نکات و ترفندهای لاراول


لاراول را به روز نگه دارید

به روز نگه داشتن لاراول مزایای زیر را به همراه دارد:


امنیت بهبود یافته: زیرا لاراول به طور منظم اصلاحات امنیتی را منتشر می کند.
عملکرد بهتر: به روز رسانی لاراول اغلب شامل بهبود عملکرد، مانند زمان بارگذاری سریع تر و کد کارآمدتر است.
ویژگی ها و عملکردهای جدید: به همین دلیل است که ما از لاراول استفاده می کنیم و آن را دوست داریم و دلیلی که زندگی ما را تغییر داد.
سازگاری با آخرین بسته های رسمی و جامعه.
 

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


پکیج ها را به روز نگه دارید

دسترسی به ده ها پکیج از اکوسیستم رسمی لاراول و همچنین هزاران پکیج عمومی چیزی است که کار ما را آسان می کند. اما هرچه پکیج های بیشتری استفاده کنید، نقاط شکست بیشتری را می توانید در معرض آن قرار دهید.


اجرای منظم به‌روزرسانی composer یکی از ساده‌ترین روش‌ها برای اتخاذ است و راه طولانی را به سمت یک پایگاه کد امن‌تر می‌رود.


اما البته، همان چیزی است که در بخش قبل وجود داشت: اگر کد شما به خوبی تست نشده باشد، رگرسیون های غیرمنتظره ممکن است رخ دهد. اما نگران نباشید؛ سوالات بعدی به شما یک نقطه شروع برای ارتقاء سطح در آن جبهه می دهد!


پروژه خود را برای جلوگیری از باگ ها تست کنید

پروژه خود را مورد آزمایش قرار دهید. نوشتن تست های خودکار موضوعی گسترده و کمتر شناخته شده در میان توسعه دهندگان است. اما آیا می‌دانستید که این یکی از مجموعه‌های محدودی از بهترین روش‌هاست که قابلیت اطمینان را تضمین می‌کند؟


در اینجا مزایای یک مجموعه تست خوب وجود دارد:


باگ های کمتر.
مشتریان راضی تر
کارفرمایان شادتر


توسعه دهندگان مطمئن وقتی بعد از مدتی به پروژه برمی گردید، از تغییر چیزی ترسی نخواهید داشت.


نیرو استخدام های جدید می توانند از همان روز اول سازنده باشند، به خصوص اگر از دستورالعمل های لاراول پیروی کنید. کدی را تغییر دادید؟ مشکلی نیست فقط تست php artisan را اجرا کنید ببینید چه چیزی را خراب کرده اید، تعمیر کنید و تکرار کنید!

اینکه بتوانید یک پروژه را به لطف تست خودکار بسیار پایدارتر کنید، برای حرفه شما شگفتی ایجاد می کند.

به ساختار پوشه پیش فرض بچسبید

آیا می دانید چرا از یک چارچوب استفاده می کنید؟ این کار شما را با مجموعه‌ای از دستورالعمل‌ها تنظیم می‌کند که می‌توانید از آن‌ها پیروی کنید تا مطمئن شوید همه اعضای تیم شما در یک صفحه هستند. بسیاری از ویژگی‌های پیچیده، خسته‌کننده و تست شده در نبرد را به صورت رایگان ارائه می‌کند، بنابراین می‌توانید روی کدنویسی آنچه که مختص پروژه‌تان است تمرکز کنید.


بنابراین، آیا پایبندی به ساختار پروژه پیش‌فرض لاراول بهترین روش محسوب می‌شود؟


راحتی. روش پیش فرض لاراول برای انجام کارها مستند شده است. وقتی هفته‌ها یا ماه‌ها بعد به پروژه‌ای باز می‌گردید، از گذشته خود به خاطر این کار تشکر خواهید کرد.
کار با هم تیمی ها بسیار آسان تر است. آنها لاراول را می شناسند، درست مثل شما. از این دانش رایج برای کمک به پیشرفت پروژه به جای اختراع مجدد چرخ هر بار استفاده کنید.
چه زمانی نباید به پیش فرض ها پایبند باشید؟


زمانی که اندازه پروژه شما واقعاً مستلزم انجام کارها متفاوت است.

از درخواست های فرم سفارشی برای اعتبارسنجی پیچیده استفاده کنید

دلیل اصلی استفاده از درخواست های فرم سفارشی عبارتند از:


استفاده مجدد از اعتبارسنجی در چندین کنترلر؛
دانلود کد از کنترلرهای متورم.


ایجاد درخواست های فرم سفارشی به سادگی با اجرای دستور Artisan است:

php artisan make:request StorePostRequest

سپس، در کنترلر خود، فقط آن را تایپ کنید:

use App\Http\Requests\StorePostRequest;

class PostController
{
    function store(StorePostRequest $request)
    {
        $validated = $request->validated();

        Post::create($validated);

        //
	}
}

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


از کنترلرهای تکی برای سازماندهی کدها استفاده کنید

گاهی اوقات، علیرغم پیروی از بهترین شیوه ها، کنترلر های شما بیش از حد بزرگ می شوند. بنابراین در اینجا یک نکته عالی وجود دارد: لاراول راهی برای ایجاد کنترلرهای single اکشن ارائه می دهد.


به جای اینکه شامل چندین اکشن (index، create، store، show و غیره) باشد، مانند Resource Controllers، Single Action Controller ها فقط شامل یک اکشن هستند.


برای ایجاد یکی، از دستور php artisan make:controller ShowPostController --invokable استفاده کنید.

این یک کنترلر با تنها یک اکشن به نام invoke__ ایجاد می کند.


سپس، در روت های خود، به جای آن می توانید این کار را انجام دهید:

use App\Http\Controllers\PostController; // [tl! --]
use App\Http\Controllers\ShowPostController; // [tl! ++]

Route::get('/posts/{post}', [PostController::class, 'show']); // [tl! --]
Route::get('/posts/{post}', ShowPostController::class); // [tl! ++]

این یک بهترین روش ذهنی است و این به شما بستگی دارد که تصمیم بگیرید که آیا می خواهید از کنترلرهای تکی استفاده کنید یا خیر.


به جای تکرار کد از میدلور ها استفاده کنید

میدلور ها در لاراول به شما امکان می دهند درخواست فعلی را فیلتر یا تغییر دهید. در اینجا چند مورد استفاده وجود دارد:


بررسی مجوزهای مورد نیاز؛
زبان کاربر را بررسی کنید و بر اساس آن منطقه را تغییر دهید.


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

public function handle(Request $request, Closure $next) : Response
{
    if (! $request->user()->hasEnoughTokens()) {
        abort(403);
    }

    return $next($request);
}

یک میدلور را می توان به هر تعداد روت متصل کرد، که به شما کمک می کند از تکرار کد جلوگیری کنید.


از Policy ها برای مجوز استفاده کنید

استفاده از policy ها برای مجوز در لاراول برای حفظ یک برنامه سازمان یافته و قابل نگهداری ضروری است. در اینجا سه دلیل کلیدی برای استفاده از policy ها وجود دارد:


  • استفاده مجدد از منطق مجوز در چندین کنترلر: با متمرکز کردن قوانین مجوز، می توانید از سازگاری اطمینان حاصل کنید و از تکرار کد در بخش های مختلف برنامه خود جلوگیری کنید.


  • بارگیری کد از کنترل‌کننده‌های متورم: انتقال منطق مجوز به policy ها به کنترلر شما کمک می‌کند تا بر مسئولیت‌های اصلی خود تمرکز کنند و خواندن و نگهداری آنها آسان‌تر باشد.


  • کدهای مرتبط با مجوز را به راحتی پیدا کنید: ذخیره policy ها در پوشه App/policy یافتن و به‌روزرسانی قوانین مجوز را در صورت نیاز برای توسعه‌دهندگان آسان می‌کند.


بیایید به یک مثال واقعی از استفاده از یک policy نگاه کنیم:

// app/Policies/PostPolicy.php
public function update(User $user, Post $post)
{
    return $user->id === $post->user_id;
}

// app/Http/Controllers/PostController.php
public function update(Request $request, Post $post)
{
    $this->authorize('update', $post);

    // ...
}

مایگرشن ها را به روز نگه دارید

مایگرشن ها راهی برای توصیف پایگاه داده شما در کدهای PHP ساده هستند. آنها را به عنوان یک phpMyAdmin ببینید، اما با کد به جای رابط کاربری. این بسیار مفید است تا به همه اعضای تیم کمک کند تا محیط مشابهی را در ماشین محلی خود تکرار کنند و آن را در تاریخچه Git پیگیری کنند.


همچنین به این صورت است که می‌توانید یک پروژه را در محیط جدید (مثلاً مرحله‌بندی و تولید) بدون نگرانی در مورد صادرات پایگاه داده از یک محیط دیگر مستقر کنید. با این حال، توسعه دهندگان گاهی اوقات به جای ایجاد یک مایگرشن جدید، پایگاه داده را مستقیماً ویرایش می کنند. این بد است و زندگی دیگر توسعه دهندگان را سخت تر می کند. هیچ چیز آزاردهنده‌تر از این نیست که همکاران خود را در Slack باگ کنید و از آنها درخواست کنید.


از مایگرشن های ناشناس برای جلوگیری از درگیری استفاده کنید (لاراول 8 و بالاتر)

مایگرشن های ناشناس یک راه عالی برای جلوگیری از تضاد نام کلاس ها هستند. به عنوان مثال، می‌توانید به تعداد دلخواه «update_posts_table» مایگرشن ایجاد کنید بدون اینکه دیگر با خطا مواجه شوید. و هر چیزی که اصطکاک را کاهش دهد چیز خوبی است.


لاراول تا زمانی که از لاراول 9 و بالاتر استفاده می کنید، مایگرشن های ناشناس را برای شما ایجاد می کند:

php artisan make:migration UpdatePostsTable

اینگونه به نظر می رسند:

<?php

use IlluminateSupportFacadesSchema;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;

return new class extends Migration {
    …
};

اما آیا می دانستید که می توانید از آنها با لاراول 8 نیز استفاده کنید؟ فقط نام کلاس را با return new class جایگزین کنید، و  یک ; در پایان اضافه کنید.

از متد ()down به درستی برای بازگشت استفاده کنید

()down (که توسط دستور php artisan migrate:rollback استفاده می شود) زمانی اجرا می شود که شما باید تغییراتی را که در پایگاه داده خود ایجاد کرده اید برگردانید.

برخی از مردم از آن استفاده می کنند، برخی نه.

اگر متعلق به افرادی هستید که از آن استفاده می کنند، باید مطمئن شوید که متد ()down شما به درستی پیاده سازی شده است.

اساساً متد ()down باید برعکس متد ()up عمل کند.

use IlluminateSupportFacadesSchema;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;

return new class extends Migration {
    public function up()
    {
        Schema::table('posts', function (Blueprint $table) {
            // The column was a boolean, but we want to switch to a datetime.
            $table->datetime('is_published')->nullable()->change();
        });
    }

    public function down()
    {
        Schema::table('posts', function (Blueprint $table) {
            // When rolling back, we have to restore the column to its previous state.
            $table->boolean('is_published')->default(false)->change();
        });
    }
}

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


از قراردادهای نامگذاری Eloquent برای نام جداول استفاده کنید

قراردادهای نامگذاری لاراول برای جداول آسان است و بهترین روشی است که زندگی تیم شما را ساده می کند. برای آشنایی بیشتر با ترفند های الکونت ها در لاراول این مقاله را بررسی کنید.


ابتدا به شما یادآوری می‌کنم که وقتی از دستورات Artisan مانند php artisan make:model Post --migration --factory استفاده می‌کنید، فریمورک همه کارها را برای شما انجام می‌دهد. به هر دلیلی، اگر نمی توانید از آن دستورات استفاده کنید، در اینجا یک نمای کلی وجود دارد:


برای مدل پست، پست های جدول خود را نام ببرید. اساساً از شکل جمع استفاده کنید (comments برای نظر، replies برای پاسخ و غیره)؛
برای یک جدول محوری که یک پست را به یک نظر پیوند می دهد (به عنوان مثال comment_post):
 

  • از هر دو نام استفاده کنید

  • فرم مفرد

  • ترتیب حروف الفبا

از مشکلات N+1 با بارگذاری eager جلوگیری کنید

من در مورد بسیاری از بهترین شیوه ها صحبت کرده ام، اما هنوز به پایان رسیده است! آیا تا به حال در مورد مشکلات N+1 شنیده اید؟ بارگذاری eager یک راه حل عالی برای جلوگیری از آنها است.

فرض کنید شما لیستی از 30 پست را با نویسنده آنها نمایش می دهید:

Eloquent برای آن 30 پست یک کوئری می کند.


سپس، 30 کوئری برای هر نویسنده، زیرا رابطه کاربر به طور lazy بارگیری می شود (به این معنی که هر بار که post->user$ را در کد خود تماس می گیرید، بارگیری می شود).
راه حل ساده است: از متد ()with استفاده کنید و از 31 کوئری به تنها 2 کوئری خواهید رسید.

Post::with('author')->get();

برای اطمینان از اینکه مشکل N+1 ندارید، می‌توانید هر زمان که رابطه‌ای را با lazy بارگیری می‌کنید، استثناها را فعال کنید. این محدودیت باید فقط برای محیط محلی شما اعمال شود.

Model::preventLazyLoading(
	  // Returns `true` unless it's the production environment.
    ! app()->isProduction()
);

برای آشنایی با روابط در لاراول این مقاله را بررسی کنید.

از حالت سختگیرانه Eloquent برای جلوگیری از مشکلات عملکرد و باگ استفاده کنید

حالت سختگیرانه Eloquent نعمتی برای رفع اشکال است. این به توسعه دهندگان کمک می کند تا با ایجاد استثنا در موارد زیر، مشکلات احتمالی را در طول مرحله توسعه پیدا کنند:


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


اختصاص ویژگی‌های غیر قابل پر کردن: ویژگی fillable$ در مدل‌های Eloquent از آسیب‌پذیری‌های تخصیص انبوه محافظت می‌کند. هنگام تلاش برای اختصاص یک ویژگی غیر قابل پر کردن، یک استثنا ایجاد می‌شود، و اطمینان حاصل می‌شود که توسعه‌دهندگان با دقت تخصیص انبوه را انجام می‌دهند.


دسترسی به ویژگی‌هایی که وجود ندارند (یا بازیابی نشده‌اند): دسترسی به ویژگی‌های ناموجود یا ویژگی‌هایی که از پایگاه داده بازیابی نشده‌اند می‌تواند منجر به رفتار یا اشکالات غیرمنتظره شود. حالت سختگیرانه در این موارد استثنا ایجاد می کند و به توسعه دهندگان کمک می کند تا چنین مشکلاتی را شناسایی و برطرف کنند.


برای فعال کردن آن، این کد را در متد ()boot در فایل AppServiceProvider.php خود اضافه کنید:

Model::shouldBeStrict(
    // It will only be enabled outside of production, though.
    ! app()->isProduction()
);

از روش جدید اعلام دسترسی و جهش استفاده کنید

روش جدید اعلام دسترسی ها و جهش دهنده ها در لاراول 9 معرفی شد.

اکنون باید آنها را به این صورت اعلام کنید:

use IlluminateDatabaseEloquentCastsAttribute;

class Pokemon
{
    function name() : Attribute
    {
        $locale = app()->getLocale();

        return Attribute::make(
            get: fn ($value) => $value[$locale],
            set: fn ($value) => [$locale => $value],
        );
    }
}

حتی می توانید مقادیر گران قیمت را در حافظه پنهان ذخیره کنید:

use IlluminateDatabaseEloquentCastsAttribute;

function someAttribute() : Attribute
{
    return Attribute::make(
        fn () => /* Do something. */
    )->shouldCache();
}

روش قدیمی به این صورت است:

class Pokemon
{
    function getNameAttribute() : string
    {
        $locale = app()->getLocale();

        return $this->attributes['name'][$locale];
    }

    function setNameAttribute($value) : string
    {
        $locale = app()->getLocale();

        return $this->attributes['name'][$locale] = $value;
    }
}

برای کارهای طولانی مدت از ()dispatchAfterResponse استفاده کنید

بیایید از ساده ترین مثال ممکن استفاده کنیم: شما یک فرم تماس دارید. بسته به روش شما، ارسال ایمیل ممکن است بین یک یا دو ثانیه طول بکشد. اگر بتوانید این کار را تا زمانی که کاربر پاسخ سرور شما را دریافت نکند به تعویق بیندازید؟


این دقیقاً همان کاری است که ()dispatchAfterResponse انجام می دهد و این یکی از نکات مورد علاقه من است:

SendContactEmail::dispatchAfterResponse($input);

یا اگر ترجیح می دهید کارها را با استفاده از توابع ناشناس ارسال کنید:

dispatch(function () {
    // Do something.
})->afterResponse();

از صف ها برای کارهای در حال اجرا حتی طولانی تر استفاده کنید

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


سرور شما خواهد سوخت.
کاربران شما باید در مقابل صفحه بارگیری منتظر بمانند.
این UX خوبی نیست، و ما می توانیم آن را تغییر دهیم.


لاراول یک سیستم صف دارد که تمام آن وظایف را به صورت متوالی یا با مقدار محدودی از موازی کاری اجرا می کند. و برای مدیریت آسان مشاغل خود از طریق رابط کاربری، Laravel Horizon همان چیزی است که باید استفاده کنید. برای آشنایی با صف ها در لاراول این مقاله را بررسی کنید.

قبل از هر تست، پایگاه داده خود را با lazy به روز کنید

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

می توانید از ویژگی Illuminate\Foundation\Testing\LazilyRefreshDatabase در tests/TestCase.php خود استفاده کنید.

یک ویژگی RefreshDatabase نیز وجود دارد، اما lazy کارآمدتر است، زیرا مایگرشن برای جداول استفاده نشده در طول آزمایش اجرا نمی شود.

از کارخانه ها برای کمک به داده ها و تست های جعلی استفاده کنید
کارخانه ها تست را قابل کنترل تر می کنند. شما می توانید با استفاده از دستور php artisan make:factory PostFactory یکی ایجاد کنید و داده های جعلی تصادفی را به هر ستون مانند این اضافه کنید:

namespace Database\Factories;

use App\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;

class PostFactory extends Factory
{
    public function definition() : array
    {
        return [
            'user_id' => User::factory(),
            'title' => fake()->sentence(),
            'slug' => fake()->slug(),
		    'content' => fake()->paragraphs(5, true),
            'description' => fake()->paragraph(),
        ];
    }
}

کارخانه ها تمام منابع مورد نیاز شما را هنگام نوشتن تست ها ایجاد می کنند.

در اینجا یکی در عمل است:

public function test_it_shows_a_given_post()
{
    $post = Post::factory()->create();

    $this
        ->get(route('posts.show', $post))
        ->assertOk();
}

هر زمان که ممکن است در مقابل استک تولید تست کنید

هنگام اجرای برنامه وب خود در مرحله تولید، احتمالاً از چیزی غیر از SQLite مانند MySQL استفاده می کنید. یا درایور کش آرایه به جای Redis. پس، چرا هنگام اجرای تست های خود نیز از آنها استفاده نمی کنید؟ ممکن است تنها باگ‌هایی در این موارد وجود داشته باشد، و قرار است تست ها به شما کمک کنند قبل از تولید در حافظه پنهان، آنها را ذخیره کنید.


من متقاعد شده‌ام که قابلیت اطمینان و دقت مهم‌تر از سرعت اجرا در این زمینه است.

 از تراکنش های پایگاه داده برای بازگرداندن تغییرات پس از هر تست استفاده کنید

در یکی از پروژه هایم، باید یک پایگاه داده پر از داده های واقعی ارائه شده توسط فایل های CSV در GitHub ایجاد کنم. زمان می برد و من نمی توانم قبل از هر تست پایگاه داده خود را به روز کنم. خیلی کند است بنابراین وقتی آزمایش‌های من داده‌ها را تغییر می‌دهند، می‌خواهم تغییرات را به عقب برگردانم تا پایگاه داده در حالت اولیه خود بماند. می توانید این کار را با استفاده از ویژگی Illuminate\Foundation\Testing\DatabaseTransactions در کلاس مورد آزمایشی پایه خود (tests/TestCase.php) انجام دهید.


تماس های API را هدر ندهید، از ماک کردن استفاده کنید

در لاراول، می توان از mock ها برای جلوگیری از هدر رفتن تماس های API در حین تست و ضربه زدن با خطاهای محدودیت نرخ استفاده کرد. فرض کنید در حال کار بر روی پروژه ای با استفاده از API توییتر هستیم. در کانیتنر خود، ما یک کلاس Client داریم که برای فراخوانی آن استفاده می شود. برای آشنایی با بهترین نکات API در لاراول این مقاله را بررسی کنید.


در حین اجرای مجموعه تست خود، می‌خواهیم از تماس‌های غیرضروری با موضوع واقعی خودداری کنیم و بهترین راه برای انجام آن این است که کلاینت خود را در کانتینر با یک ماک تعویض کنیم.

$mock = $this->mock(Client::class);

$mock
    ->shouldReceive('getTweet')
    ->with('Some tweet ID')
    ->andReturn([
	    'data' => [
			'author_id' => '2244994945',
			'created_at' => '2022-12-11T10:00:55.000Z',
			'id' => '1228393702244134912',
			'edit_history_tweet_ids' => ['1228393702244134912'],
		    'text' => 'This is a tweet',
		],
	]);

برای آشنایی با تزریق وابستگی و سرویس کانیتنر در لاراول این مقاله را بررسی کنید.

از درخواست های HTTP سرگردان برای شناسایی تست های کند جلوگیری کنید

اگر می‌خواهید مطمئن شوید که تمام درخواست‌های HTTP که در طول آزمایش‌های شما انجام می‌شوند، ماک هستند، در اینجا یک نکته عالی وجود دارد، می‌توانید از روش ()Http::preventStrayRequests از HTTP Facade استفاده کنید.


اگر هر درخواست HTTP که پاسخ ماک مربوطه ندارد اجرا شود، یک استثنا ایجاد می کند.

می توانید از این روش در یک آزمون انفرادی یا برای کل مجموعه تست خود استفاده کنید.

Http::preventStrayRequests();

فایل env. خود را ردیابی نکنید

فایل env شما حاوی اطلاعات حساسی است. لطفا، آن را ردیابی نکنید! مطمئن شوید که در gitignore. شما گنجانده شده است.

بیشتر اوقات، نشت داده ها در داخل مشاغل است. مدیریت رمز عبور راه حل بهتری برای اشتراک گذاری اعتبار است.


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


CSS و جاوا اسکریپت کامپایل شده خود را ردیابی نکنید

CSS و جاوا اسکریپت شما با استفاده از نسخه های اصلی در منابع/css و resource/js تولید می شوند. هنگام استقرار در تولید، یا آنها را روی سرور کامپایل می کنید یا قبلاً یک مصنوع ایجاد می کنید. به خصوص برای افرادی که هنوز از Laravel Mix استفاده می کنند، توصیه می کنم ردیابی آنها را متوقف کنند.


این کاملا آزاردهنده است که هر بار که چیزی را تغییر می‌دهید، یک public/css/app.css یا public/js/app.js جدید ایجاد می‌شود و باید کامیت شود.

فقط دو خط در gitignore. شما لازم است تا این کار متوقف شود:

public/css
public/js

نتیجه

در این مقاله ما با بهترین ترفند ها و نکات در لاراول آشنا شدیم شما با استفاده از این نکات می توانید اپلیکشن های با کیفیت بالا بنویسید و کد های تمیز را خواهید داشت. اگر ترفند دیگیری نیز وجود دارد و در این مقاله به آن اشاره نشده است در قسمت نظرات با ما به اشتراک بگذارید.

#لاراول#laravel#laravel_clean_code#کدتمیز_لاراول#روابط_لاراول
نظرات ارزشمند شما :

در حال دریافت...

مقاله های مشابه

در حال دریافت...