لاراول از جمله بهترین فریم ورک‌های PHP حال حاضر است. همزمان بروزرسانی های امنیتی لاراول نسخه 5.6 نسخه جدید لارول 5.7 منتشر شده است.

 

با انتشار لاراول 5.7، بروزرسانی لاراول نسخه 5.6 تا 7 اوت 2018 ادامه خواهد داشت و بحث امنیتی آن تا 7 فوریه 2019 ادامه دارد. لاراول 5.7 در رفع باگ و رفع موارد امنیتی این فریم ورک به ترتیب تا فوریه 2019 و اوت 2019 پشتیبانی خواهد شد. ویژگی‌های مهمی که به لاراول 5.7 اضافه شده است شامل Laravel Nova، احراز هویت اختیاری ایمیل (Email Verification)، پشتیبانی از کاربران مهمان در درگاه‌های احراز هویت (Guest User Gates / Policies)، پیغام‌های بومی سازی و ویژگی‌های دیگر است.

 

1. ویژگی Laravel Nova در لاراول 5.7

لاراول Nova

Laravel Nova یک پکیج ویژه در لاراول است که همزمان لاراول 5.7 منتشر شده است که در جهت ایجاد پنل مدیریت (ادمین) زیبا به کار می‌رود. شما می‌توانید آن را در پروژه جدید خود یا از طریق composer  در پروژه‌های قبلی خود نصب کنید. خبر خوب این است که این ویژگی در نسخه لاراول 5.6 هم پشتیبانی می‌شود. این پکیج از Vuejs ،Vue Router و Tailwind به عنوان فرانت اند FrontEnd استفاده می‌کند. Laravel Nova عملیات ساده CRUD تا جستجوها، فیلترها، لنزها و عملیات اندازه گیری پیچیده را شامل می‌شود.

 

2. تایید ایمیل (Email Verification) در لاراول 5.7

لاراول در نسخه جدید خود یک سیستم احراز هویت ایمیل هم اضافه کرده است. یک ستون جدید email_verified_at به جدول users اضافه شده است. فقط باید عملیات migration را انجام دهید. مدل User باید رابط MustVerifyEmail را پیاده سازی کند تا به کاربر جدید پیشنهاد دهد که ایمیل خود را تایید کنند. بنابراین، user model شما به شکل زیر خواهد بود:

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable implements MustVerifyEmail
{
    // ...
}

پس از پیاده سازی رابط MustVerifyEmail، کاربر تازه ثبت نام کرده یک ایمیل دریافت خواهد کرد که حاوی لینک تایید برای فعال سازی اکانت خود است. بنابراین، وقتی کاربر روی لینک کلیک می‌کند، اکانت او فعال می‌شود. علاوه بر این، برای تایید ایمیل در لاراول 5.7 یک middleware وجود دارد که تنها برای ایمیل‌های verify شده فعال است. بنابراین، این ویژگی می‌تواند برای کارایی بک اند بسیار مفید باشد:

'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class'

برای محافظت از rout‌e های خود برای ایمیل‌های verify شده، middleware را به rout‌e ها پیوست کنید:

Route::get('profile/index', function () {
    //
})->middleware('verified');

 

3. درگاه کاربر مهمان (Guest User Gates / Policies) در لاراول 5.7

درگاه کاربر مهمان (Guest User Gates) هم یک ویژگی جدید است که در لاراول 5.7 ارائه می‌شود. تا به امروز، زمانی که بازدیدکننده‌ها سعی در دسترسی به مسیرهای غیر مجاز داشتند، لاراول مقدار  false را بازمی‌گرداند، اما در لاراول 5.7، شما می‌توانید تنظیم کنید که در این شرایط مقدار  null بازگردانده شود:

Gate::define('update-post', function (?User $user, Post $post) {
    // ...
});

 

4. سرور انباشت داده (Symfony Dump Server) در لاراول 5.7

laravel 5.7

تا به حال به ذخیره داده (dumping) در کنسول یا در یک فایل HTML اکسترنال فکر کرده‌اید؟ در ویژگی جدید دیگری که مشاهده می کنید می‌توانید خیلی راحت داده‌های خود را در کنسول یا حتی در یک فایل HTML ذخیره کنید. این دستور بسیار کارآمد و ساده است و برای رفع باگ بدون قطع یا دخالت در زمان اجرای اپلیکیشن مفید می‌باشد:

php artisan dump-server

# Or send the output to an HTML file
php artisan dump-server --format=html > dump.html

دستور فوق یک سرور را در پس زمینه اجرا می‌کند. سرور داده‌های ارسال شده از اپلیکیشن را دریافت کرده و آن را از طریق کنسول نمایش می‌دهد. نگران نباشید، وقتی این دستور اجرا نشود، dump() به صورت پیش‌فرض کار خواهد کرد.

 

5. بومی سازی پیغام ها (Notification Localization) در لاراول 5.7

در لاراول 5.7 می‌توانید پیغام‌هایی را به زبانی به جز زبان پیشفرض اپلیکیشن ارسال کنید. برای این منظور، باید زبانی که می‌خواهید برای ارسال notification استفاده کنید را در متد locale مشخص کنید. برای مثال:

$user->notify((new UserCreated($user))->locale('np'));

بومی سازی ورودی‌های متعدد را می‌توان از طریق فرمان Notification facade  هم انجام داد:

Notification::locale('np')->send($users, new UserCreated($user));

 

6. بهبود پیغام های خطا (Improved Error Messages) در لاراول 5.7

Improved Error Messages

با لاراول 5.7 می‌توانید به راحتی پیغام‌های خطا را ردیابی کنید. دلیل آن هم استفاده لاراول 5.7 از bouncer package است. این ابزار، پیغام‌های خطا را روی فراخوانی‌های داینامیک و مدل‌های Eloquent نشان می‌دهد. در لاراول 5.7 می‌توانید به صورت مستقیم به پیغام‌های خطا دسترسی داشته باشید بدون اینکه به پیغام‌های object نیازی باشد.

 

7. URL Generator و syntax قابل فراخوانی در لاراول 5.7

یک syntax قابل فراخوانی برای URL‌های عملیاتی در لاراول 5.7  گنجانده شده است. این ویژگی مشابه با لاراول 5.6 است که یک رشته را در متد action می‌پذیرفت. مزیت اصلی سینتکس جدید اینست که شما می‌توانید به صورت مستقیم از آن به کنترلر راهبری (navigate) کنید. سینتکس اولیه برای سینتکس قابل فراخوانی به شکل زیر است:

<?php
// PostsController is a controller
// index is a method name inside controller

$url = action([PostsController::class, 'index']);
8

 

8. تغییرات دایرکتوری منابع در لاراول 5.7

در لاراول 5.7 تغییراتی در دایرکتوری resources ایجاد شده است. دایرکتوری asset‌ حذف و دایرکتوری js و sass به دایرکتوری منابع منتقل می‌شوند. وقتی شما نسخه لاراول خود را ارتقا می‌دهید، نیازی نیست دایرکتوری resources/asset   را بر اساس ساختار دایرکتوری جدیدتر بازسازی کنید چون با ساختار قبلی هم کار خواهد کرد.

 

9. لینک های Paginator در لاراول 5.7

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

{{ $paginator->onEachSide(5)->links() }}

 

10. استریم های Read/Write فایل سیستم در لاراول 5.7

ادغام Flysystem در لاراول 5.7 امکان استفاده از دو متد readStream و writeStream را فراهم می‌کند:

Storage::disk('s3')->writeStream(
    'remote-file.zip',
    Storage::disk('local')->readStream('local-file.zip')
);