امکانات و ویژگی های جدید در لاراول 8.45

لاراول نسخه 8.45 خودش رو با ۳ امکان جدید رونمایی کرد. شخصی سازی خروجی در بلید، پخش راحت مدل و ادعای دانلود، از جمله تغییرات مهم این نسخه هستش. در ادامه درباره هر کدوم از این ویژگی های جدید توضیح مختصری میدم.

 

 

شخصی سازی خروجی در بلید (Custom Blade Echo Handlers)

Luke Downing به عنوان نفر اصلی توسعه دهنده، شخصی سازی خروجی در بلید بوده. این قابلیت جدید به شما این امکان رو میده که از یه آبجکت خروجی استرینگ یا رشته ای بگیرید. کاربرد این قابلیت جایی هستش که شما کنترل متد __toString() رو نداشته باشید. یعنی نتونید از این متد استفاده کنید. در ادامه مثالی از داکیومنت رسمی لاراول زده میشه تا شما بیشتر با نحوه کارکرد اون آشنا بشید:

use Money\Money;

Blade::stringable(function (Money $money) {
   return $money->formatTo('en_GB');
});

با رشته ای که توی خروجی یا کالبک (callback) دریافت میکنیم، میتونیم یه شی رو داخل یه فایل بلید (blade) با استفاده از شخصی سازی کلوژر (closure)  بدون استفاده از متد __toString() ، خروجی (echo) بگیریم.

Cost: {{ $money }}

برای جزئیات بیشتر و کامل تر در مورد استفاده از این ویژگی، به صفحه داکیومنت «custom echo handlers» در لاراول مراجعه کنید.

 

 

پخش مدل (Model Broadcasting)

Taylor Otwell کمک زیادی در توسعه امکانات پخش مدل (Model broadcasting) کرده. این ویژگی توانایی پخش خودکار یک مدل الکوئنت بعد از تغییرش رو نشون میده:

وقتی مدل های الکوئنت (Eloquent models) برنامه‌ی شما رکوردی رو ایجاد، به روزرسانی یا حذف میکنن، معمولا رویدادی (Events) پخش یا برودکست (broadcast) میشه. البته این کار رو به راحتی میشه بصورت دستی تعریف کرد. برای این کار باید رویداد رو برای مدل الکوئنت ایجاد کرد و با اینترفیس ShouldBroadcast رویداد رو علامت گذاری کرد.

با این حال، اگه شما به هر منظوری از این رویداد ها در برنامه خودتون استفاده نمیکنید، ایجاد کلاس های رویداد فقط با هدف برادکست (broadcasting) ممکنه دست و پا گیر (شلوغ) باشه. برای رفع این مشکل، لاراول به شما اجازه میده تا مدل الکوئنتی که نیاز به پخش یا برادکست تغییرات خودش داره رو نشون بدید.

برای استفاده از این ویژگی، مدل های شما نیاز دارن که ویژگی BroadcastsEvents رو داخل خودشون فراخوانی و پیاده سازی کنن. این trait همزمان با استفاده از متد ٖbroadcastOn() کار میکنه:

namespace App\Models;

use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Database\Eloquent\BroadcastsEvents;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    use BroadcastsEvents, HasFactory;

    /**
     * Get the user that the post belongs to.
     */
    public function user()
    {
        return $this->belongsTo(User::class);
    }

    /**
     * Get the channels that model events should broadcast on.
     *
     * @param  string  $event
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn($event)
    {
        return [$this, $this->user];
    }
}

برای مشاهده جزئیات کامل این ویژگی ، داکیومنت بخش مدل برادکستینگ (model broadcasting) لاراول رو بررسی کنید.

 

 

ادعای دانلود (Download Assertions)

Tanmay Mishu کمک به توسعه این توانایی برای ادعای پاسخ (response) به تست آزمایشی دانلود کرد:

// Assert the response returned a download
$response->assertDownload();

// Assert the response is a download with a given file name.
$response->assertDownload('invoice.pdf');

این ویژگی آزمایش انواع پاسخ های پرونده رو که قبلا از طریق Response::download و BinaryFileResponse یا Storage::download استفاده میشد، آسون تر کرده.
ویژگی ادعای دانلود (assert download) رو میتونید داخل داکیومنت مربوط به تست، بیشتر مورد بررسی قرار بدید.

 

لیست کامل ویژگی ها و به روزرسانی های جدید لاراول 8.45 و همچنین تفاوت بین نسخه های 8.44.0 و 8.45.0 رو میتونید داخل گیت هاب مشاهده کنید.

 

منبع: laravel-news.com

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

آدرس ایمیل شما منتشر نخواهد شد.

کد امنیتی *-- بارگیری کد امنیتی --