首頁  >  文章  >  php框架  >  Laravel 8.77發布,這些功能都改進了!

Laravel 8.77發布,這些功能都改進了!

藏色散人
藏色散人轉載
2022-01-20 16:59:502195瀏覽

下面由Laravel教學專欄給大家介紹《Laravel 8.77發布,這些功能被改進了》,希望對大家有所幫助!

Laravel 團隊發布了8.77 版本,其中改進了屬性轉換/訪問器,請求date() 方法以DateTime 實例訪問數據,MAC 地址驗證,在存儲磁碟上定義自定義臨時URL 的能力,以及v8.x 中的最新更改分支。 【推薦:《laravel影片教學》】

屬性轉換/存取器改進

Taylor Otwell 提供了一種定義屬性存取器和修改器的新方法:

// 之前, 两个方法的方式
public function setTitleAttribute($value)
{
    $this->attributes['title'] = strtolower($value);
}
 // 新的方式
protected function title(): Attribute
{
    return new Attribute(
        set: fn ($value) => strtolower($value),
    );
}

這裡有一個例子同時有get 和set 的實現:

/**
 * 获取用户的标题
 */
protected function title(): Attribute
{
    return new Attribute(
        get: fn ($value) => strtoupper($value),
        set: fn ($value) => strtolower($value),
    );
}

要了解更多信息,請查看關於此功能的 pull request 以及關於此功能的描述和討論。

已將日期時間解析新增至請求實例

@Italo 為請求實例提供了一個date()方法,使得從請求資料取得日期實例變得非常方便:

// 以前
if ($date = $request->input('when')) {
    $date = Carbon::parse($datetime);
}
// 之后
$date = $request->date('when');

每個連接的前綴

Ben Tidy 有助於在Predi的每個連接基礎上使用前綴。以下是Redis設定的pull請求的範例:

'redis' => [
    'client' => env('REDIS_CLIENT', 'predis'),
     'default' => [
        'host' => env('REDIS_HOST', '127.0.0.1'),
        'password' => env('REDIS_PASSWORD', null),
        'port' => env('REDIS_PORT', 6379),
        'database' => env('REDIS_DB', 0),
        'prefix' => env('REDIS_PREFIX', 'prefix:'),
    ],
     'cache' => [
        'host' => env('REDIS_HOST', '127.0.0.1'),
        'password' => env('REDIS_PASSWORD', null),
        'port' => env('REDIS_PORT', 6379),
        'database' => env('REDIS_CACHE_DB', 1),
        'prefix' => env('REDIS_PREFIX', 'prefix2:'),
    ],
],

MAC 位址驗證規則

Bilal Al-Massry 貢獻了 mac_address 驗證規則, 用於驗證 MAC 位址:

$trans = $this->getIlluminateArrayTranslator();
$v = new Validator($trans, ['mac' => 'foo'], ['mac' => 'mac_address']);
$this->assertFalse($v->passes());
 $trans = $this->getIlluminateArrayTranslator();
$v = new Validator($trans, ['mac' => '01-23-45-67-89-ab'], ['mac' => 'mac_address']);
$this->assertTrue($v->passes());
 $trans = $this->getIlluminateArrayTranslator();
$v = new Validator($trans, ['mac' => '01-23-45-67-89-AB'], ['mac' => 'mac_address']);
$this->assertTrue($v->passes());

定義儲存的臨時URL 方法

Ash Allen 貢獻了為Storage 閘面定義自訂臨時URL邏輯的能力。以下是拉取請求的幾個範例:

Storage::disk('local')
    ->buildTemporaryUrlUsing(function ($path, $expiration, $options) {
      return 'using local';
    });
 // $url is: 'using local'
$url = Storage::temporaryUrl('file.jpg', now()->addMinutes(5));

發行說明

您可以在github 上看到以下新功能和更新的完整清單以及 8.76.0 and 8.77.0 之間的差異。以下發行說明直接來自 變更日誌:

v8.77.0

新增

  • 屬性轉換/ 存取器改進(#40022)
  • 新增 Illuminate/View/Factory::renderUnless() (#40077)
  • 向Request 實例新增日期時間解析(#39945)
  • 使每個連線都可以在Predis 上使用前綴(#40083)
  • 新增了驗證MAC 位址的規則(#40098)
  • 新增了為儲存定義臨時URL 的功能(#40100)

已修正

  • 修正Redis 驅動程式中透過引用key 從快取中刪除values 時可能出現的記憶體不足錯誤(#40039)
  • 新增 Illuminate/Filesystem/FilesystemManager::setApplication() (#40058)
  • 修正在doesntContain() 方法的參數傳遞(739d847)
  • #翻譯Enum 規則訊息(#40089)
  • 修正關於日期的驗證(#40088)
  • 在PruneCommand.php 中不允許models 和except  一起使用(f62fe66)

#已更改

  • 透過Eloquent\Query::explain 方法對Query\Builder:explain 使用特定於資料庫解釋指令的功能 (#40075)

原文位址: https://laravel-news.com/laravel-8-77-0

翻譯網址:https://learnku.com/laravel/t/64602

以上是Laravel 8.77發布,這些功能都改進了!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:learnku.com。如有侵權,請聯絡admin@php.cn刪除