Versionshinweise
- Versionshinweise
- Versionskontrollschema Supportstrategie
- Laravel 5.8
- Modellstrategie automatisch finden
- PSR- 16 Cache-Spezifikation
- Mehrere Broadcast-Authentifizierungs-Watcher
- Token Guard Token-Hash-Algorithmus
- E-Mail verbessern Validator
- Standardzeitzone für geplante Aufgaben
- Zwischentabellen-/Pivot-Modellereignis
- Artisan Aufrufverbesserungen
- Mock/Spy-Testhilfsmethoden
- Eloquente Ressourcenschlüsselpersistenz
- Erweitert oder Wo Beredt Methoden
- Artisan Serve-Verbesserungen
- Vorlagendateizuordnung
- DynamoDB-Cache/Sitzung Treiber
- Carbon 2.0 unterstützt
- Pheanstalk 4.0 unterstützt
- Eloquent HasOneThrough Relationship
Versionshinweise
- Versionskontrollplan
- Supportstrategie
- Laravel 5.8
Versionskontrollplan
Das Versionierungsschema von Laravel verwendet die folgende Konvention: 主版本号.次版本号.修订号
. Das Nebenversions-Framework wird alle sechs Monate (Februar und August) veröffentlicht, während Revisionsversionen wöchentlich veröffentlicht werden können und Revisionsversionen keine wichtigen Änderungen enthalten.
Wenn Sie in Ihrer Anwendung oder innerhalb eines Pakets auf das Laravel-Framework oder andere Komponenten verweisen, sollten Sie immer Versionseinschränkungen wie 5.7.*
verwenden, da Nebenversionen von Laravel wichtige Änderungen enthalten. Wir werden jedoch hart daran arbeiten, sicherzustellen, dass Sie die Aktualisierung innerhalb eines Tages oder weniger durchführen können.
Releases zwischen Hauptversionen dauern oft viele Jahre und jede Veröffentlichung stellt eine grundlegende Änderung in der Framework-Architektur und der zugrunde liegenden Struktur dar. Derzeit gibt es keine Pläne, eine Hauptversionsnummer zu entwickeln.
Support-Richtlinie
Für LTS-Releases wie 5.5 werden zwei Jahre Fehlerbehebungen und drei Jahre Sicherheitsfixes bereitgestellt. Diese Versionen bieten die längste Support- und Wartungszeit. Für die allgemeine Version werden nur sechs Monate Fehlerbehebungen und ein Jahr Sicherheitsfixes bereitgestellt.
版本 | 发布时间 | Bug 修复截止时间 | 安全修复截止时间 |
---|---|---|---|
5.0 | 2015 年 2 月 4 日 | 2015 年 8 月 4 日 | 2016 年 2 月 4 日 |
5.1 (LTS) | 2015 年 6 月 9 日 | 2017 年 6 月 9 日 | 2018 年 6 月 9 日 |
5.2 | 2015 年 12 月 21 日 | 2016 年 6 月 21 日 | 2016 年 12 月 21 日 |
5.3 | 2016 年 8 月 23 日 | 2017 年 9 月 23 日 | 2017 年 8 月 23 日 |
5.4 | 2017 年 1 月 24 日 | 2017 年 7 月 24 日 | 2018 年 1 月 24 日 |
5.5 (LTS) | 2017 年 8 月 30 日 | 2019 年 8 月 30 日 | 2020 年 8 月 30 日 |
5.6 | 2018 年 2 月 7 日 | 2018 年 8 月 7 日 | 2019 年 2 月 7 日 |
5.7 | 2018 年 9 月 4 日 | 2019 年 3 月 4 日 | 2019 年 9 月 4 日 |
5.8 | 2019 年 2 月 26 日 | 2019 年 8 月 26 日 | 2020 年 2 月 26 日 |
Laravel 5.8
Laravel 5.8 optimiert weiterhin basierend auf Laravel 5.7, einschließlich der Einführung neuer Eloquent-Beziehungen (Has-One-Through), der Optimierung der E-Mail-Überprüfung und der automatischen Registrierung von Autorisierungsrichtlinienklassen basierend auf Konventionen, DynamoDB Cache- und Sitzungstreiber, Optimierung der Zeitzonenkonfiguration des Taskplaners, Unterstützung der Zuweisung mehrerer Authentifizierungswächter zu Broadcast-Kanälen, PSR-16 Spezifikation des Cache-Treibers, Optimierung des Befehls artisan serve
, Unterstützung für PHPUnit 8.0, Unterstützung für Carbon 2.0, Unterstützung für Pheanstalk 4.0 sowie mehrere Fehlerbehebungen und Verbesserungen der Benutzerfreundlichkeit.
Eloquente HasOneThrough
Assoziationen
Eloquent bietet jetzt Unterstützung für den Assoziationstyp hasOneThrough
. Angenommen, es besteht eine Eins-zu-eins-Beziehung zwischen der Modellklasse „Supplier“ und der Modellklasse „Account“ und es besteht auch eine Eins-zu-eins-Beziehung zwischen der Modellklasse „Account“ und der Modellklasse „AccountHistory“, dann der Lieferant Die Modellklasse und die AccountHistory-Modellklasse können über die Methode hasOneThrough
verbunden werden. Stellen Sie auf der Remote-Ebene eine Eins-zu-Eins-Zuordnung basierend auf der Account-Modellklasse her. Sie können die hasOneThrough
-Zuordnung verwenden, um über die Account-Modellklasse auf die AccountHistory-Modellklasse zuzugreifen:
/** * Get the account history for the supplier. */ public function accountHistory() { return $this->hasOneThrough(AccountHistory::class, Account::class); }
Modellrichtlinie automatisch finden
Bei Verwendung von Laravel 5.7 die jedem Modell entsprechende Authentifizierungsrichtlinie muss explizit im AuthServiceProvider
der Anwendung registriert werden:
/** * 当前应用的策略对应关系 * * @var array */ protected $policies = [ 'App\User' => 'App\Policies\UserPolicy', ];
Laravel 5.8 Automatische Suche nach Modellstrategien eingeführt, sofern die Benennung von Modellen und Strategien den Standardkonventionen von Laravel entspricht. Das heißt, die Strategie muss sich unter dem Pfad Policies
befinden, der das obige Modell enthält. Beispielsweise kann das Modell unter dem Pfad app
und die Strategie unter dem Pfad app/Policies
platziert werden. Darüber hinaus muss der Strategiename mit dem Modellnamen übereinstimmen und mit dem Suffix Policy
versehen sein. Auf diese Weise entspricht das User
-Modell der UserPolicy
-Klasse.
Wenn Sie Ihre eigene Strategiefindungslogik bereitstellen möchten, können Sie die Methode Gate::guessPolicyNamesUsing
verwenden, um eine benutzerdefinierte Rückruffunktion zu registrieren. Im Allgemeinen sollte diese Methode aus dem AuthServiceProvider
Ihrer Anwendung aufgerufen werden:
use Illuminate\Support\Facades\Gate; Gate::guessPolicyNamesUsing(function ($modelClass) { // return policy class name... });
{note} Alle Richtlinien, die explizit
AuthServiceProvider
zugeordnet sind, haben Vorrang vor impliziten. Strategien werden automatisch gefunden.
PSR-16-Caching-Spezifikation
Um detailliertere Ablaufzeiten beim Speichern von Cache-Elementen zu ermöglichen und dem PSR-16-Caching-Standard zu entsprechen, haben wir die Gültigkeitseinheit des Cache-Elements geändert von Minuten auf Sekunden einstellen. Die Gültigkeitseinheiten, die den Methoden IlluminateCacheRepository
, put
, putMany
, add
und remember
von setDefaultCacheTime
und seinen erweiterten Klassen sowie der Methode put
jeder Cache-Speicher-Implementierungsklasse entsprechen, wurden auf diese Weise angepasst. Weitere Informationen finden Sie in der zugehörigen PR.
Wenn die obige Methode in Ihrem Code aufgerufen wird, müssen Sie den entsprechenden Code aktualisieren, um sicherzustellen, dass die jetzt verstrichene Gültigkeitszeit mit der vorherigen übereinstimmt (die Einheit wird zu Sekunden anstelle der vorherigen Minuten). Sie können auch eine DateTime
-Instanz übergeben, um die Ablaufzeit des Cache-Elements zu identifizieren:
// Laravel 5.7 - 缓存30分钟... Cache::put('foo', 'bar', 30); // Laravel 5.8 - 缓存30秒... Cache::put('foo', 'bar', 30); // Laravel 5.7 / 5.8 - 缓存30秒... Cache::put('foo', 'bar', now()->addSeconds(30));
Multiple Broadcast Authentication Watchers
in Laravel In früheren Versionen authentifizierten private und Präsenz-Broadcast-Kanäle Benutzer über den Standardauthentifizierungsschutz der Anwendung. Ab Laravel 5.8 können Sie mehrere Wächter zur Authentifizierung von Anfragen zuweisen:
Broadcast::channel('channel', function() { // ... }, ['guards' => ['web', 'admin']])
Token Guard Token-Hashing-Algorithmus
token
Wächter, der eine grundlegende API-Authentifizierung in Laravel bereitstellt, unterstützt jetzt die Speicherung von API-Tokens unter Verwendung des SHA-256-Hash-Algorithmus. Dies ist sicherer als das Speichern von Klartext-Tokens. Weitere Informationen zu Hash-Tokens finden Sie in der vollständigen Dokumentation zur API-Authentifizierung.
Hinweis: Auch wenn Laravel einen einfachen, tokenbasierten Authentifizierungsschutz bietet, empfehlen wir angesichts seiner Robustheit und der Bereitstellung einer API-Authentifizierung für Online-Anwendungen dringend, dass Sie Laravel Passport verwenden.
Verbesserter E-Mail-Validator
Laravel 5.8 verwendet das egulias/email-validator
-Paket von SwiftMailer, um die Verifizierungslogik des E-Mail-Validators zu verbessern. E-Mail-Adressen, die zuvor von der E-Mail-Validierungslogik von Laravel als gültig angesehen wurden, wie z. B. example@bär.se
, können jetzt als ungültig angesehen werden.
Standardzeitzone für geplante Aufgaben
Laravel ermöglicht Benutzern die Verwendung der timezone
-Methode, um die Zeitzone geplanter Aufgaben anzupassen:
$schedule->command('inspire') ->hourly() ->timezone('America/Chicago');
Wenn Sie eine Zeitzone für definieren Mit jeder geplanten Aufgabe wird dies komplizierter und mühsamer. Eine einfachere Möglichkeit besteht darin, eine app/Console/Kernel.php
-Methode innerhalb der schedule Timezone
-Datei zu definieren. Diese Methode gibt die Standardzeitzone für alle geplanten Aufgaben zurück:
/** * 获取默认定时任务时区。 * * @return \DateTimeZone|string|null */ protected function scheduleTimezone() { return 'America/Chicago'; }
Zwischentabellen-/Pivot-Modellereignis
In früheren Versionen von Laravel, beim Anhängen, Trennen oder mit einer benutzerdefinierten Zwischentabelle/Eloquent Modellereignisse werden nicht ausgelöst, wenn ein „Pivot“-Modell mit einer Viele-zu-Viele-Beziehung verwendet wird. In Laravel 5.8 werden diese Ereignisse jetzt ausgelöst, wenn das benutzerdefinierte Zwischentabellenmodell verwendet wird.
Artisan-Anrufverbesserungen
Laravel ermöglicht es Ihnen, Artisan über die Artisan::call
-Methode anzurufen. In früheren Versionen von Laravel wurden Optionen für einen Befehl über ein Array als zweiten Parameter an Methoden übergeben:
use Illuminate\Support\Facades\Artisan; Artisan::call('migrate:install', ['database' => 'foo']);
In Laravel 5.8 können Sie jedoch den vollständigen Befehl einschließlich seiner Optionen übergeben. Es wird als erster String-Parameter an die Methode übergeben:
Artisan::call('migrate:install --database=foo');
Mock/Spy-Test-Hilfsmethode
Um das Erstellen von Mock-Objekten komfortabler zu gestalten, gibt es neue Methoden mock
und spy
wurde zu den grundlegenden Laravel-Testfällen hinzugefügt. Diese Methoden binden die Scheinklasse automatisch an den Container. Zum Beispiel:
// Laravel 5.7 $this->instance(Service::class, Mockery::mock(Service::class, function ($mock) { $mock->shouldReceive('process')->once(); })); // Laravel 5.8 $this->mock(Service::class, function ($mock) { $mock->shouldReceive('process')->once(); });
Eloquente Ressourcenschlüssel bleiben erhalten
Wenn eine Eloquent-Ressourcensammlung von einer Route zurückgegeben wird, setzt Laravel die Schlüssel der Sammlung zurück, sodass sie in einfacher numerischer Reihenfolge vorliegen:
use App\User; use App\Http\Resources\User as UserResource; Route::get('/user', function () { return UserResource::collection(User::all()); });
Bei Verwendung von Laravel 5.8 können Sie einer Ressourcenklasse ein preserveKeys
-Attribut hinzufügen, um anzugeben, ob der Schlüssel der Ressourcenklasse beibehalten wird. Um die Konsistenz mit früheren Versionen von Laravel zu gewährleisten, werden diese Schlüssel standardmäßig zurückgesetzt:
<?php namespace App\Http\Resources; use Illuminate\Http\Resources\Json\JsonResource; class User extends JsonResource { /** * Indicates if the resource's collection keys should be preserved. * * @var bool */ public $preserveKeys = true; }
Wenn der Eigenschaftswert von preserveKeys
auf true
gesetzt ist, wird der Sammlungsschlüssel beibehalten:
use App\User; use App\Http\Resources\User as UserResource; Route::get('/user', function () { return UserResource::collection(User::all()->keyBy->id); });
High-LevelorWhere
Eloquente Methoden
Zuvor veröffentlichtes Laravel In müssen Sie Abschlussrückrufe verwenden, um mehrere Eloquent-Modellbereiche über den Abfrageoperator or
zusammenzuführen:
// scopePopular 和 scopeActive 方法定义在 User 模型中... $users = App\User::popular()->orWhere(function (Builder $query) { $query->active(); })->get();
Lavavel 5.8 führt die „High-Level“-Methode orWhere
ein, mit der Sie auf Abschlüsse verzichten können. Dies ermöglicht reibungslose verkettete Aufrufe des Bereichs.
$users = App\User::popular()->orWhere->active()->get();
Artisan Serve-Verbesserungen
Im zuvor veröffentlichten Laravel startet die serve
-Methode von Artisan Ihren Anwendungsdienst und lauscht am 8000
-Port. Wenn bereits ein serve
-Befehlsprozess gestartet wurde und diesen Port belegt, schlägt der Versuch, den zweiten Anwendungsdienst über den serve
-Befehl zu starten, fehl. Ab Laravel 5.8 scannt serve
die verfügbaren Ports bis 8009
, sodass Sie mehrere Anwendungsdienste gleichzeitig starten können.
Vorlagendateizuordnung
Beim Kompilieren einer Blade-Vorlage fügt Laravel jetzt oben in der kompilierten Datei einen Kommentar hinzu, der den ursprünglichen Blade-Vorlagenpfad enthält.
DynamoDB-Cache-/Sitzungstreiber
Laravel 5.8 führt DynamoDB-Cache- und Sitzungstreiber ein. DynamoDB ist eine serverlose NoSQL-Datenbank, die von Amazon Web Services bereitgestellt wird. Die Standardkonfiguration des dynamodb
-Cache-Treibers finden Sie in der Laravel 5.8-Cache-Konfigurationsdatei.
Carbon 2.0-Unterstützung
Laravel 5.8 bietet Unterstützung für die Release-Version der Carbon-Datumsverarbeitungsbibliothek ~2.0
.
Pheanstalk 4.0-Unterstützung
Laravel 5.8 bietet Unterstützung für die Veröffentlichung der Pheanstalk-Warteschlangenbibliothek ~4.0
. Wenn Ihre Anwendung die Pheanstalk-Bibliothek verwendet, aktualisieren Sie die Bibliothek bitte über Composer auf die ~4.0
-Version.