لاراول 6 LARAVEL و آشنایی با تغییرات آن

لاراول 6 LARAVEL و آشنایی با تغییرات آن

تغییرات لاراول 6 LARAVEL به وضوح در نسخه جدید این سایت قابل مشاهده می باشد که سایت تغییرات بسیار زیادی داشته و همچنین برند نیز دستخوش تغییرات زیادی شده است این نسخه نیاز به php 7.2 یا بالاتر دارد و سازگاری با Laravel Vapor، بهبود پاسخ ها به مجوز دسترسی، job middleware، lazy collections، بهبود sub-query ها،یکجا کردن ساختار فرانت اند در پکیج کامپوزر laravel/ui، برطرف کردن تعداد زیادی باگ و بهبودهایی در کارایی برنامه ادامه داده است به طور کلی در لاراول نسخه 6 تلاش زیادی برای رفع باگ های نسخه 5.8 انجام شده است از جمله تغییرات :

زمان مطالعه: 3 دقیقه
بازدید: 1094
پرسش و پاسخ: 0

تغییرات لاراول 6 LARAVEL

  • حذف توابع کمکی Array-String : لاراول با حذف این توابع، آن ها را در قالب Composer Package ها ارائه داده است.
  • توسعه Carbon 2 : در این نسخه استفاده از کربن 2 (Carbon 2) امکان پذیر شده است.

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

استفاده از error page جدید به نام ignition

ignition ارور پیج جدید و پیش فرض لاراول ۶ هست برای بهبود debugging exceptions و stack traces با امکانات و تب های مختلف که کار دیباگ رو از قبل خیلی راحت تر میکنه. صفحه دیباگ جدید بخشی به نام share هم داره که اطلاعات اروری که نمایش داده شده روی لوکال یا production رو میتونید از طریق url در سایت https://flareapp.io با بقیه به اشتراک بگذارید.

ویژگی خیلی خوبه دیگه نمایش آیکن ادیت (به شکل مداد) در کنار فایل دارای ارور میباشد که با کلیک روی اون و انتخاب ادیتور . اون فایل در ادیتور به روی صفحه میاد.

سمنتیک نسخه‌ای

پکیج فریم ورک لاراول (laravel/framework) حالا از سمنتیک نسخه ای استاندارد پیروی میکند. این ویژگی سازگاری فریم‌ورک را با بقیه ی پکیج های اصلی  لاراول که از این استاندارد نسخه ای سازی پیروی میکنند را تضمین میکند . دوره ی انتشار لاراول بدون تغییر میماند.

 

سازگاری با Laravel Vapor

Laravel Vapor توسط Taylor Otwell ساخته شده است. لاراول ۶ با Laravel Vapor که یک پلتفرم خودکار بدون سرور برای لاراول است سازگاری دارد. Vapor پیچیدگی مدیریت برنامه‌های لاراولی روی AWS Lambda را با interface کردن آن ها با استفاده از صف های SQS، پایگاه‌های داده، پوسته‌های Redis، شبکه ها،‌ CloudFront، CDN و چیز های دیگری ساده سازی کرده است.

 

بهبود پاسخ ها به مجوز دسترسی

بهبود پاسخ ها به مجوز دسترسی توسط Gary Green پیاده سازی شده. در نسخه های قبلی لاراول، گرفتن و نشان دادن پیام های مربوط به دسترسی به کاربر سخت بود . این مشکل توضیح این که دقیقا چرا یک درخواست مشخص از کاربر رد شده است  را سخت کرده بود . در لاراول ۶ استفاده از پاسخ مجوز های دسترسی و متد Gate:inspect بسیار آسان تر شده . به طور مثال متد زیر را در نظر بگیرید:

/**
 * Determine if the user can view the given flight.
 *
 * @param  \App\User  $user
 * @param  \App\Flight  $flight
 * @return mixed
 */
public function view(User $user, Flight $flight)
{
    return $this->deny('Explanation of denial.');
}

 

پاسخ مجوز دسترسی با استفاده از متد Gate::inspect بسیار راحت قابل دریافت است :

$response = Gate::inspect('view', $flight);

if ($response->allowed()) {
    // User is authorized to view the flight...
}

if ($response->denied()) {
    echo $response->message();
}

علاوه بر آن، این پیام های ساخته شده توسط ما در زمان استفاده از متد های کمک کننده مثل this->authorize$ یا  Gate::authorize از routes یا controllers به صورت خودکار به frontend برگردانده میشوند.

 

Job Middleware

ویژگی دیگری که به لاراول ۶ اضافه شده است امکان استفاده از middleware برای queue job ها است. برای این کار تنها کافی است متدی به نام middleware به کلاس job اضافه گردد که آرایه ای از object های middleware برگرداند.

public function middleware()
{
     return [new SomeMiddleware];
}

و در زیر نمونه ای از مثال کلاس middleware :

class SomeMiddleware
{
    public function handle($command, $next)
    {
        // Do something...

        return $next($command);
    }
}

شما همچنین می تواندید  middleware را در هنگام dispach به job اختصاص دهید :

SomeJob::dispatch()->through([new SomeMiddleware]);

 

Lazy Collections

Lazy Collections توسط Joseph Silber پیاده سازی شده است. بسیاری از توسعه دهندگاه لاراول در حال حاضر از استفاده از متد های قدرتمند Collections لذت میبرند . برای تکمیل کلاس Collection لاراول ۶ LazyCollection  را معرفی میکند که به مولد های PHP کمک میکند که امکان کار با داده های بزرگ را زمانی که میزان حافظه کم است به شما بدهند .

به عنوان مثال فرض کنید برنامه ی شما ضمن استفاده از متد های Collection  لاراول برای بررسی Log ها باید یک فایل log چند گیگا بایتی را پردازش کند . به جای خواندن تمام فایل به صورت یکجا، میتوان از lazy collections برای نگه داشتن تنها بخشی از فایل در حافظه در هر زمان استفاده کرد.

$users = App\User::all()->filter(function ($user) {
    return $user->id > 500;
});

 

هرچند متد cursor در query ساز در لاراول ۶ آپدیت شده تا یک LazyCollection برگرداند ، همچنین این امکان به شما داده میشود که همچنان تنها یک query را اجرا کنید و همینطور در هر زمان تنها یک مدل Eloquent را در حافظه داشته باشید. در این مثال، تا زمانی که تمام کاربر ها را بررسی نکرده ایم اجرای filter به پایان نمیرسد. که حافظه ی اشغال شده را بسیار کم میکند.

$users = App\User::cursor()->filter(function ($user) {
    return $user->id > 500;
});

foreach ($users as $user) {
    echo $user->id;
}

 

بهبود sub-query ها

لاراول ۶ تعداد زیادی متد جدید را برای sub-query های پایگاه داده ارائه کرده است. برای مثال فرض کنید یک جدول برای مقصد پروازها به نام destinations و یک جدول برای پروازهای هر مقصد به نام flights داریم. جدول flights شامل ستون arrived_at است که نشان میدهد که پرواز چه زمانی به مقصد رسیده است. با استفاده از sub-query جدید لاراول ۶ میتوانیم همه مقصد ها و اسم آخرین پروازی که به هر مقصد رسیده را تنها با یک query بدست بیاوریم.

return Destination::addSelect(['last_flight' => Flight::select('name')
    ->whereColumn('destination_id', 'destinations.id')
    ->orderBy('arrived_at', 'desc')
    ->latest()
    ->limit(1)
])->get();

 

علاوه بر آن، میتوانیم از ویژگی‌های جدید sub-query که به فانکشن orderBy که در query ساز وجود دارد اضافه شده و امکان مرتب سازی همه ی مقاصد را بر اساس زمان آخرین پرواز رسیده به هر مقصد  میدهد استفاده کنیم . این کار هم میتواند تنها با یک query انجام شود:

return Destination::orderByDesc(
    Flight::select('arrived_at')
        ->whereColumn('destination_id', 'destinations.id')
        ->orderBy('arrived_at', 'desc')
        ->latest()
        ->limit(1)
)->get();

 

رابط کاربری لاراول

 ساختار forntend که معمولا از نسخه های قبلی لاراول تهیه شده اند در پکیج laravel/ui کامپوزر قرار داده شده اند. این کار این امکان را میدهد که ساختار رابط کاربری لاراول بتواند جدا از بخش اصلی فریم‌ورک نسخه بندی و منتشر شود. یک نتیجه ی این تغییر این است که هیچ کد bootstrap یا Vue در ساختار پیشفرض فریم‌ورک وجود ندارد و دستور make:auth نیز از فریم‌ورک استخراج شده است. برای بازگرداندن Vue/Bootstrap رسمی به ساختار فریم‌ورک که در نسخه های قبلی لاراول وجود داشتند، باید پکیج laravel/ui را نصب کنید و دستور Artisan ui را اجرا کنید تا ساختار forntend نصب شود.

composer require laravel/ui

php artisan ui vue --auth

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

بهزاد میرزازاده
مسیر درست با پرسش های درست ساخته می شود

مشاهده تمام مطالب نویسنده