Upgrade-Anweisungen


Upgrade-Anleitung

  • aus 5.7 Upgrade auf 5.8.0

Änderungen mit großer Auswirkung

  • Cache-TTL in Sekunden
  • Sicherheitsverbesserungen für Cache-Sperren
  • Markdown-Dateipfad geändert
  • Nexmo / Slack Änderungen des Benachrichtigungskanals

Änderungen mit mittlerer Auswirkung

  • Container Builder und Tag Service
  • SQLite-Versionseinschränkungen
  • Ersetzen Sie Helfer durch Klassen für Strings und Arrays
  • Veraltet, zurückgestellt Dienstanbieter
  • Einhaltung der PSR-16-Spezifikation
  • Endung unregelmäßiger Plural-Modellnamen verbessern
  • Auto-Inkrement-ID-Attribut zum benutzerdefinierten Zwischentabellenmodell hinzufügen
  • Unterstützen Sie die Pheanstalk 4.0-Bibliothek

Aktualisierung von Laravel 5.7 auf 5.8

Geschätzte Upgrade-Zeit: 1 Stunde

Hinweis: Wir versuchen, jede mögliche Änderung zu dokumentieren. Da die meisten bahnbrechenden Änderungen innerhalb des Frameworks erfolgen, kann sich nur ein Teil dieser Änderungen auf Ihre Anwendung auswirken.

Abhängigkeiten aktualisieren

Aktualisieren Sie in composer.json die laravel/framework-Abhängigkeit auf 5.8.*.

Überprüfen Sie als Nächstes, ob die installierten Drittanbieterpakete in der Anwendung Laravel 5.8 unterstützen und prüfen Sie, ob die installierte Version korrekt ist.

Anwendungsvertrag

environmentMethoden

Auswirkungswahrscheinlichkeit: Sehr gering

Illuminate/Contracts/Foundation/ApplicationKlasseenvironmentMethoden ' Die Signatur wurde geändert. Wenn diese Methode in Ihrer Anwendung überschrieben wird, sollten Sie die Signatur dieser Methode aktualisieren:

/**
 * 获取或检查当前应用程序的环境
 *
 * @param  string|array  $environments
 * @return string|bool
 */public function environment(...$environments);

Neu hinzugefügte Methode

Potenzielle Auswirkung: Sehr gering

Die folgenden neuen Methoden wurden hinzugefügtbootstrapPath, configPath, databasePath, environmentPath, resourcePath, storagePath, resolveProvider, bootstrapWith, configurationIsCached, detectEnvironment, environmentFile, environmentFilePath, getCachedConfigPath, getCachedRoutesPath, getLocale, getNamespace, getProviders, hasBeenBootstrapped, loadDeferredProviders, loadEnvironmentFrom, routesAreCached, setLocale, shouldSkipMiddleware, terminate werden zu Illuminate/Contracts/Foundation/Application

hinzugefügt. Wenn Sie diese Schnittstelle implementieren, sollten Sie diese Methoden zur Implementierungsklasse hinzufügen.

Authentifizierung

Routing-Parameter für die Benachrichtigung zum Zurücksetzen des Passworts

Auswirkungswahrscheinlichkeit: Niedrig

Wenn der Benutzer auf den Link zum Zurücksetzen des Passworts klickt, verwendet Laravel der

-Helfer zum Generieren von URLs zum Erstellen von Routen, die auf den Namen route verweisen, wenn Laravel verwendet wird In Laravel 5.7 wird das Token ohne expliziten Namen an den password.reset-Helfer übergeben, wie zum Beispiel: route

route('password.reset', $token);

Wenn Sie Laravel 5.8 verwenden, wird das Token als expliziter Parameter an

übergeben Helfer: route

route('password.reset', ['token' => $token]);

Wenn Sie also Ihre eigene

Route definieren würden, wäre es URI Stellen Sie sicher, dass Sie einen Token-Parameter angeben. password.reset

Standardlänge des Passworts geändert

Wahrscheinlichkeit der Auswirkung: Niedrig

Erforderliche Passwortlänge beim Auswählen oder Zurücksetzen eines Passworts auf mindestens acht Zeichen geändert.

Cache

TTL in Sekunden

Potenzielle Auswirkung: Sehr hoch

Um detailliertere Ablaufzeiten beim Speichern von Daten zu ermöglichen, wurde die Lebensdauer der zwischengespeicherten Daten von Minuten auf Sekunden geändert. Die Methoden IlluminateCacheRepository , put , putMany , add und remember der Klasse setDefaultCacheTime und ihrer erweiterten Klassen sowie die Methoden put aller Cache-Speicher wurden aktualisiert. Weitere Informationen finden Sie in der entsprechenden PR.

Wenn Sie einer dieser Methoden eine Ganzzahl übergeben, aktualisieren Sie Ihren Code, um sicherzustellen, dass die im Cache übergebenen Daten in Sekundenschnelle übergeben werden. Darüber hinaus können Sie eine DateTime-Instanz übergeben, um anzugeben, wann die Daten ablaufen:

// 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));

{Tip} Durch diese Änderung ist das Laravel-Cache-System vollständig mit dem PSR-16-Cache-Bibliotheksstandard kompatibel.

Folgen Sie PSR-16

Möglichkeit der Auswirkung: Mittel

Zusätzlich zu Änderungen an den oben genannten Rückgabewerten wird dieses Upgrade auch aktualisiert TTL der Methoden IlluminateCacheRepository, put und putMany in der Klasse add Parameter, um die Konformität mit der PSR-16-Spezifikation zu verbessern. Die neue Funktion bietet einen Standardwert null . Wenn also kein TTL-Wert angegeben wird, wird der Cache dauerhaft gespeichert und läuft nicht ab. Darüber hinaus werden Cache-Einträge gelöscht, wenn ihre TTL 0 oder weniger beträgt. Weitere Informationen finden Sie in der entsprechenden PR.

KeyWritten Auch Veranstaltungen wurden aufgrund dieser Änderungen aktualisiert.

Verbesserungen der Sperrsicherheit

Möglichkeit von Auswirkungen: Hoch

In Laravel 5.7 und früheren Versionen von Laravel bieten einige Cache-Treiber die „atomare Sperre“ Die Funktion kann dazu führen, dass die Sperre aufgrund eines unerwarteten Verhaltens vorzeitig aufgehoben wird.

Zum Beispiel: Client A erwirbt eine Sperre foo, die in 10 Sekunden abläuft. Client A benötigt tatsächlich 20 Sekunden, um seine Aufgabe abzuschließen. Während der Ausführung der Client A-Aufgabe wird die Sperre automatisch vom Cache-System aufgehoben. Anschließend erwirbt Client B die Sperre foo. Schließlich schließt Client A seine Aufgabe ab und gibt die Sperre frei foo, gibt jedoch versehentlich die von Client B gehaltene Sperre frei. Zu diesem Zeitpunkt kann Client C die Sperre erneut erhalten.

Um diese Situation zu entschärfen, wird die Sperre nun mithilfe eines eingebetteten „Scope-Tokens“ generiert, der sicherstellt, dass unter normalen Umständen nur der Sperrinhaber die Sperre freigeben kann.

Wenn Sie die Sperre mit der Cache::lock()->get(Closure)-Methode verwenden, sind keine Änderungen erforderlich:

Cache::lock('foo', 10)->get(function () {    // 锁将会被安全的自动释放});

Wenn Sie jedoch Cache::lock()->release() manuell aufrufen, müssen Sie Ihren Code aktualisieren, um die beizubehalten Locks Beispiel. Nach Abschluss der Aufgabe kann dann die Methode release auf derselben Sperrinstanz aufgerufen werden. Zum Beispiel:

if (($lock = Cache::lock('foo', 10))->get()) {    // 执行任务…    $lock->release();}

Manchmal möchten Sie vielleicht eine Sperre in einem Prozess erwerben und sie in einem anderen Prozess freigeben. Sie könnten beispielsweise während einer Webanforderung eine Sperre erhalten und die Sperre aufheben, wenn der durch diese Anforderung ausgelöste Job in der Warteschlange endet. In diesem Fall sollten Sie den „Besitzer-Token“ des Sperrbereichs an den in der Warteschlange befindlichen Job übergeben, damit der Job die Sperre mit dem angegebenen Token erneut instanziieren kann:

// 在控制器中…$podcast = Podcast::find(1);
if (($lock = Cache::lock('foo', 120))->get()) {
    ProcessPodcast::dispatch($podcast, $lock->owner());}// 在进程广播队列中…
Cache::restoreLock('foo', $this->owner)->release();

Wenn Sie dies tun möchten, ohne Rücksicht auf die Freigabe zu nehmen Um ein Schloss ohne seinen aktuellen Besitzer zu erstellen, können Sie die folgenden forceRelease-Methoden verwenden:

Cache::lock('foo')->forceRelease();

Repository und Store Vertrag

Auswirkungswahrscheinlichkeit: sehr gering

Um die Anforderungen von PSR-16 vollständig zu erfüllen, muss der Rückgabewert der Methoden IlluminateContractsCacheRepository und put festgelegt werden des forever-Vertrags und die Methoden IlluminateContractsCacheStore, put und putMany des forever-Vertrags wurden geändert void bis bool .

Sammlung

firstWhereMethode

Auswirkungsmöglichkeit: Sehr gering

firstWhereMethodenparameter entsprechend geändertwhere Die Signatur der Methode. Wenn Sie diese Methode überschreiben möchten, sollten Sie die Parameter der Methode so aktualisieren, dass sie mit ihrem übergeordneten Element übereinstimmen:

/**
 * Get the first item by the given key value pair.
 *
 * @param  string  $key
 * @param  mixed  $operator
 * @param  mixed  $value
 * @return mixed
 */public function firstWhere($key, $operator = null, $value = null);

Terminal

KernelVertrag

Auswirkungsmöglichkeiten: Sehr niedrig

terminate-Methode wurde zu Illuminate/Contracts/Console/Kernel hinzugefügt im Vertrag. Wenn Sie diese Schnittstelle implementieren, sollten Sie diese Methode zur implementierenden Klasse hinzufügen.

Container

Generator- und Markup-Service

Auswirkungswahrscheinlichkeit: Mittel

Die tagged-Methode von Container wird mit PHP, dem Anbieter, generiert Instanziiert den Dienst langsam mit dem angegebenen Tag. Aufgrund dieser Änderung gibt die Methode tagged den Typ iterable anstelle von 数组 zurück. Wenn Ihre Methode einen Rückgabewert mit Typhinweis verwendet, müssen Sie auch den Typhinweis in einen iterable-Typ ändern.

Außerdem kann auf den Tag-Dienst nicht mehr direkt über den Array-Offset-Wert zugegriffen werden, z. B. $container->tagged('foo')[0].

resolveMethode

Auswirkungswahrscheinlichkeit: sehr gering

resolveMethode empfängt einen neuen booleschen Parameter, der das Ereignis auf dem Objekt Ob angibt Der (Parsing-Rückruf) sollte während der Instanziierung ausgelöst/ausgeführt werden. Wenn Sie diese Methode überschreiben, müssen Sie die Methodensignatur aktualisieren, damit sie mit der übergeordneten Methode übereinstimmt.

addContextualBindingMethoden

Auswirkungswahrscheinlichkeit: Sehr gering

IlluminateContractsContainerContainerVertrag fügt addContextualBindingMethode hinzu. Wenn Sie diese Schnittstelle implementieren möchten, sollten Sie diese Methode zu Ihrer Implementierung hinzufügen.

tagged Methoden

Auswirkungswahrscheinlichkeit: Niedrig Die
tagged-Methode gibt jetzt einen iterable-Typ anstelle eines array-Typs zurück. Wenn Ihre Codeparameter Typhinweise haben, suchen Sie alle tagged-Methodenhinweise vom Typ array und ändern Sie die Typhinweise in iterable-Typen.

flushMethoden

Auswirkungswahrscheinlichkeit: Sehr gering

IlluminateContractsContainerContainerVertrag fügt flushMethode hinzu. Wenn Sie diese Schnittstelle implementieren möchten, sollten Sie diese Methode zu Ihrer Implementierung hinzufügen.

Datenbank

MySQL-JSON-Wert nicht in Anführungszeichen gesetzt

Auswirkungswahrscheinlichkeit: Niedrig

Bei Verwendung von MySQL und MariaDB wird der JSON Der vom Abfragekonstruktor zurückgegebene Wert wird nicht in Anführungszeichen gesetzt. Andere Datenbanken verhalten sich konsistent wie folgt:

$value = DB::table('users')->value('options->language');
dump($value);
// Laravel 5.7...
'"en"'
// Laravel 5.8...
'en'

Daher wird der ->>-Operator nicht mehr unterstützt oder benötigt.

SQLite

Potenzielle Auswirkungen: Moderat

Ab Laravel 5.8 wird die früheste Version von SQLite bis SQLite 3.7.11 unterstützt. Wenn Sie eine frühere Version von SQLite verwenden, sollten Sie ein Upgrade durchführen (es wird empfohlen, auf SQLite 3.8.8 zu aktualisieren).

Eloquent

Unregelmäßige Pluralenden in Modellnamen

Auswirkungswahrscheinlichkeit: Mittel

Ab Laravel 5.8 ist die Modellbenennung von enthalten zusammengesetzte Namen, die auf unregelmäßige Pluralformen enden Die Pluralisierung erfolgt nun korrekt.

// Laravel 5.7...
App\Feedback.php -> feedback (正确的复数形式)
App\UserFeedback.php -> user_feedbacks (错误的复数形式)
// Laravel 5.8
App\Feedback.php -> feedback (正确的复数形式)
App\UserFeedback.php -> user_feedback (正确的复数形式)

Wenn Ihr Modellname den Pluralnamen nicht korrekt verwendet, können Sie ihn nach der Definition des $table-Attributs im Modell weiterhin verwenden:

/**
 * 与模型关联的数据表名称。
 *
 * @var string
 */protected $table = 'user_feedbacks';
<🎜 mit Inkrementierende ID Benutzerdefiniertes Relay-Modell

Wenn Sie eine Viele-zu-viele-Beziehung mit einem benutzerdefinierten Relay-Modell definieren und das Relay-Modell über einen automatisch inkrementierten Primärschlüssel verfügt, sollten Sie sicherstellen, dass das benutzerdefinierte Relay-Attribut A

ist in der Modellklasse definiert und sein Wert ist incrementing: true

/**
 * 标识 ID 是否自增
 *
 * @var bool
 */public $incrementing = true;

Methode loadCount

Auswirkungswahrscheinlichkeit: Niedrig

Methode

zur Basisklasse IlluminateDatabaseEloquentModel hinzugefügt. Wenn Ihre Anwendung auch die Methode loadCount definiert, kann es zu Konflikten mit der Methode in Eloquent kommen. loadCount

Methode originalIsEquivalent

Auswirkungswahrscheinlichkeit: sehr gering

Die IlluminateDatabaseEloquentConcernsHasAttributes Mitgliedsmethode im Merkmal wurde von originalIsEquivalent geändert für protected. public

Automatische Soft-Delete-Konvertierung von Attributen deleted_at

Auswirkungswahrscheinlichkeit: Niedrig

Wenn Ihr Eloquent-Modell das Merkmal IlluminateDatabaseEloquentSoftDeletes verwendet, wird die Mitgliedereigenschaft deleted_at jetzt automatisch in eine Instanz Carbon konvertiert. Sie können dieses Verhalten überschreiben, indem Sie Ihren benutzerdefinierten Accessor für die Membereigenschaft schreiben oder ihn manuell zum casts-Attribut hinzufügen:

protected $casts = ['deleted_at' => 'string'];

BelongsTos getForeignKey-Methode

Einflussmöglichkeit: gering

BelongsTo im Assoziationsverhältnis Die Methoden getForeignKey und getQualifiedForeignKey wurden in getForeignKeyName bzw. getQualifiedForeignKeyName umbenannt, sodass die Methodennamen mit anderen von Laravel bereitgestellten Beziehungen übereinstimmen.

Ereignis

fire Methode

Auswirkungswahrscheinlichkeit: Niedrig

Illuminate/Events/Dispatcher im Unterricht fire Methode (in Larevel 5.4 veraltet) wurde ENTFERNT.
Sie sollten die Alternative verwenden dispatch .

Ausnahmebehandler

ExceptionHandlerVertrag

Auswirkungswahrscheinlichkeit: Niedrig

IlluminateContractsDebugExceptionHandlerNeu im Vertrag hinzugefügt shouldReport Verfahren. Wenn Sie nun die Ausnahmehandlerschnittstelle implementieren, müssen Sie auch diese Methode implementieren.

renderHttpException Methode

Auswirkungswahrscheinlichkeit: Niedrig

IlluminateFoundationExceptionsHandler Die Signatur der renderHttpException-Methode in der Klasse hat sich geändert. Wenn Sie diese Methode nun in einem Ausnahmehandler überschreiben, sollten Sie die Signatur der Methode ändern, um mit ihrer übergeordneten Klasse konsistent zu sein:

/**
 * 将给定的 Http 异常转换为 Http 响应。
 *
 * @参数 \Symfony\Component\HttpKernel\Exception\HttpExceptionInterface  $e
 * @返回 \Symfony\Component\HttpFoundation\Response
 */protected function renderHttpException(HttpExceptionInterface $e);

Facades

Facade Service Resolution

Potenzielle Auswirkungen: Gering

getFacadeAccessor Methode jetzt verfügbar Es wird nur eine Zeichenfolge zurückgegeben, die die Dienstcontainer-ID darstellt; zuvor würde diese Methode eine Objektinstanz zurückgeben.

Mail

Markdown-Dateipfadänderung

Auswirkungswahrscheinlichkeit: Hoch

Wenn Sie vendor:publish bereits verwenden Der Befehl veröffentlicht die Markdown-E-Mail-Komponente von Laravel. Sie müssen den Pfad /resources/views/vendor/mail/markdown umbenennen text . Die Methoden

und markdownComponentPaths wurden in textComponentPaths umbenannt. Wenn Sie diese Methode überschreiben, sollten Sie den Methodennamen so aktualisieren, dass er mit der übergeordneten Klasse übereinstimmt.

PendingMailMethodenparameteränderungen in der Klasse

Auswirkungsmöglichkeit: sehr gering

Die Methoden

, IlluminateMailPendingMail, send, sendNow und queue in der Klasse laterfill wurden geändert, um eine IlluminateContractsMailMailable-Instanz anstelle einer IlluminateMailMailable-Instanz als Argument zu akzeptieren. Wenn Sie eine Methode überschreiben möchten, müssen Sie ihre Parameter aktualisieren, damit sie mit der übergeordneten Klasse konsistent sind.

Warteschlange

Pheanstalk 4.0

Potenzielle Auswirkungen: Mittel

Laravel 5.8 bietet Unterstützung für die ~4.0 Release-Version von Pheanstalk Warteschlange. Wenn Sie die Pheanstalk-Bibliothek in Ihrer Anwendung verwenden, aktualisieren Sie Ihre Bibliothek bitte über Composer auf die ~4.0 Release-Version.

JobVertrag

Auswirkungswahrscheinlichkeit: Sehr gering Die Methoden

isReleased, hasFailed und markAsFailed wurden hinzugefügt IlluminateContractsQueueJobUnter Vertrag. Wenn Sie diese Schnittstelle implementieren, sollten Sie diese Methoden zu Ihrem Implementierungscode hinzufügen.

Job::failed & FailingJobKlassen

Auswirkungsmöglichkeit: Sehr gering

Wenn in Laravel 5.7 eine Warteschlangenaufgabe fehlschlägt, wird die Warteschlange angezeigt Der Worker führt die Methode FailingJob::handle aus. In Laravel 5.8 wurde die Logik in der Klasse FailingJob in die Methode fail migriert, die in dieser Aufgabenklasse definiert ist. Aus diesem Grund ist die fail-Methode im IlluminateContractsQueueJob-Vertrag enthalten.

IlluminateQueueJobsJob Die Basisklasse enthält die Implementierung von fail, und in regulären Anwendungen muss kein Code geändert werden. Wenn Sie jedoch einen benutzerdefinierten Warteschlangentreiber erstellen und eine Aufgabenklasse erstellen, die nicht die von Laravel bereitgestellte Aufgabenbasisklasse erbt, sollten Sie sie manuell in Ihrer Methode für die benutzerdefinierte Aufgabenklasse fail 🎜> implementieren. Als Referenz für die Implementierung können Sie sich die Task-Basisklasse von Laravel ansehen.

Diese Änderung ermöglicht die Anpassung des Warteschlangentreibers, um mehr Kontrolle über den Aufgabenlöschvorgang zu erhalten.

Redis Blocking Pop

Möglichkeit von Auswirkungen: sehr gering

Es ist jetzt sicher, die Funktion „Blocking Pop“ des Redis-Warteschlangentreibers zu verwenden . Wenn zuvor die Verbindung zum Redis-Dienst oder -Worker getrennt wurde und gleichzeitig Aufgaben entfernt wurden, konnten Aufgaben in der Warteschlange verloren gehen (ein Ereignis mit geringer Wahrscheinlichkeit). Um das Blockieren von Pops sicher zu machen, wird für jede Laravel-Warteschlange eine neue Redis-Liste mit dem Suffix :notify erstellt.

Anfrage

TransformsRequestMiddleware

Auswirkungswahrscheinlichkeit: Niedrig

Wenn die Anfrageeingabe nun ein Array ist, IlluminateFoundationHttpMiddlewareTransformsRequest Die Methode transform der Middleware erhält den „vollqualifizierten“ Anforderungseingabeschlüssel :

'employee' => [    'name' => 'Taylor Otwell',],/**
    * 转换给定的值.
    *
    * @param  string  $key
    * @param  mixed  $value
    * @return mixed
    */protected function transform($key, $value){    dump($key); // 'employee.name' (Laravel 5.8)    dump($key); // 'name' (Laravel 5.7)}

Route

UrlGeneratorProtokoll

Potenzielle Auswirkungen: Sehr gering

Die

previous-Methode wurde dem IlluminateContractsRoutingUrlGenerator-Vertrag hinzugefügt. Wenn Sie diese Schnittstelle aufrufen möchten, sollten Sie diese Methode zu Ihrer Implementierung hinzufügen.

-Attribut in

Illuminate/Routing/UrlGeneratorcachedSchema Auswirkungswahrscheinlichkeit: Sehr gering

-Attribut in

(in Laravel 5.7 veraltet) wurde in geändert.

SitzungenIlluminate/Routing/UrlGenerator$cachedSchema$cachedSchemeMiddleware

Möglichkeit von Auswirkungen: Sehr gering

StartSession

Die Persistenzlogik der Sitzung wurde von < 🎜 geändert > Methode in

Methode verschoben. Wenn Sie darin enthaltene Methoden überschreiben, sollten Sie sie aktualisieren, um die Änderungen widerzuspiegeln. Unterstützung

String- und Array-Klassen gegenüber Hilfsfunktionen bevorzugenterminate()handle()

Auswirkungswahrscheinlichkeit: Mittel

Alle

und

Globale Hilfsfunktionen sind veraltet. Sie müssen die von und bereitgestellten Methoden direkt verwenden.

Die Auswirkungen dieser Anpassung werden als mittel markiert, da diese Hilfsfunktionen zur besseren Abwärtskompatibilität in das neue Erweiterungspaket laravel/helpers verschoben werden. array_*str_*Verzögerter DienstanbieterIlluminateSupportArrIlluminateSupportStr

Auswirkungswahrscheinlichkeit: Mittel

Boolescher Wert

des Dienstanbieters, der angibt, ob der Anbieter zurückgestellt werden soll. Die Eigenschaft ist veraltet. Nun muss die Markierung eines Dienstanbieters als zurückgestellt erfolgen, indem der

-Vertrag implementiert wird. Testen

PHPUnit 8deferIlluminateContractsSupportDeferrableProvider

Möglichkeit der Auswirkung: Optional

Standardmäßig verwendet Laravel 5.8 PHPUnit 7. Sie können jedoch auf PHPUnit 8 aktualisieren, dies erfordert jedoch PHP >= 7.2. Weitere Informationen finden Sie in der Release-Ankündigung von PHPUnit 8. Die Methoden

und erfordern jetzt den Rückgabe-Void-Typ:

protected function setUp(): voidprotected function tearDown(): void

Validierung

setUp Vertrag tearDown

Beeinflusst die Wahrscheinlichkeit: Sehr niedrig

Validator

Eine neue

-Methode wurde hinzugefügt:

/**
 * 获取已验证的属性和值。
 *
 * @return array
 */public function validated();
Wenn Sie diese Schnittstelle aufrufen, müssen Sie die Implementierung dieser Methode hinzufügen.

IlluminateContractsValidationValidator Merkmal validated

Wahrscheinlichkeit einer Auswirkung: Sehr gering

ValidatesAttributes

, und <🎜 im Merkmal > Sichtbarkeit der Methode von auf

angepasst.

IlluminateValidationConcernsValidatesAttributesparseTable Klasse getQueryColumnrequireParameterCountprotected Auswirkungswahrscheinlichkeit: sehr gering public

DatabasePresenceVerifier Sichtbarkeit der Methode

der Klasse angepasst von

Für .

Validator Klasse

Auswirkungswahrscheinlichkeit: sehr gering

IlluminateValidationValidator Klasse getPresenceVerifierFor Methodensichtbarkeit angepasst von protected auf public.

E-Mail-Verifizierung

Auswirkungsmöglichkeit: sehr gering

E-Mail-Verifizierungsregeln prüfen jetzt, ob die E-Mail-Adresse mit RFC5630 kompatibel ist, sodass die Verifizierungslogik und SwiftMailer bleiben konsistent. In Laravel 5.7 überprüft die Regel email nur, ob E-Mail-Adressen RFC822-konform sind.

Wenn Sie also Laravel 5.8 verwenden, werden E-Mail-Adressen, die zuvor als ungültig galten, jetzt als gültig betrachtet, wie in (z. B. hej@bär.se). Normalerweise wird dies als Fehlerbehebung betrachtet; wir fügen es hier jedoch zur Erinnerung hinzu. Sollten bei dieser Änderung Probleme auftreten, teilen Sie uns dies bitte mit.

Ansicht

getDataMethode

Möglichkeit der Auswirkung: Sehr gering

IlluminateContractsViewView Neu im Vertrag hinzugefügtgetData Verfahren. Wenn Sie diese Schnittstelle aufrufen, müssen Sie die Implementierung dieser Methode hinzufügen.

Benachrichtigungen

Nexmo/Slack-Benachrichtigungskanäle

Potenzielle Auswirkungen: Hoch

Nexmo- und Slack-Benachrichtigungskanäle wurden offiziell vorgezogen Der Ausbau ist im Gange. Um diese Kanäle in Ihrer eigenen App nutzen zu können, müssen Sie die folgenden Erweiterungen installieren:

composer require laravel/nexmo-notification-channel
composer require laravel/slack-notification-channel

Andere

Wir empfehlen Ihnen außerdem, sich das Änderungsprotokoll im laravel/laravel Code-Repository anzusehen. Obwohl viele dieser Updates nicht erforderlich sind, können Sie diese Dateien in Ihrer Anwendung synchron mit dem Code-Repository halten. Einige dieser Updates werden bereits in diesem Upgrade-Leitfaden erwähnt, es gibt jedoch viele andere kleinere Updates (z. B. Änderungen an Konfigurationsdateien oder Anmerkungen), die nicht aufgeführt sind. Mit dem GitHub-Vergleichstool können Sie sehen, welche Updates für Sie wichtiger sind.

Dieser Artikel wurde zuerst auf der Website LearnKu.com veröffentlicht.