
Das PHP-Framework-Team von Yii hat die Version 2.0.16 veröffentlicht, die über hundert Korrekturen und einige Verbesserungen enthält . Mehrere Sicherheitsprobleme wurden behoben.
Der Yii 2.0-Zweig wurde vor über einem Jahr eingefroren, was bedeutet, dass er hauptsächlich Korrekturen akzeptiert. Dies wurde getan, damit sich das Yii-Team auf Yii 3 konzentrieren kann. Ganz am Ende dieses Beitrags finden Sie weitere Informationen zu Yii 3.
Diese Version enthält mehrere Änderungen, die sich auf vorhandene Anwendungen auswirken können. Lesen Sie unbedingt UPGRADE.md .
Vielen Dank an die Mitglieder der Yii-Community , die an der Entwicklung beteiligt sind. Ohne Sie wäre ein solches Großprojekt nicht möglich gewesen. Besonderer Dank geht an die Übersetzer, die die Dokumentation auf dem neuesten Stand halten.
Im Folgenden sind die interessantesten Verbesserungen aufgeführt, die es immer noch geschafft haben, in die Version einzudringen. Die vollständige Liste finden Sie wie gewohnt im CHANGELOG .
Aktiver Datensatz
Salem Ouerdani, @tunecino, fügte Verhalten für optimistisches Sperren hinzu.
Durch optimistisches Sperren können mehrere Benutzer gleichzeitig einen Datensatz bearbeiten und potenzielle Konflikte auf der Serverseite vermeiden. Wenn ein Benutzer versucht, Änderungen basierend auf veralteten Daten zu speichern (da bereits ein anderer Benutzer gespeichert wurde), wird eine StaleObjectException
und keine Aktualisierung oder Löschung durchgeführt.
Der Mechanismus einer solchen Sperre selbst wurde in den ersten Versionen von Yii implementiert, aber die korrekte Verwendung war nicht so einfach. Jetzt einfach.
Die Dokumentation finden Sie im offiziellen Handbuch.
und die OptimisticLockBehavior-API .
Migrationen
Der Konsolenmigrationsgenerator verwendet jetzt standardmäßig Tabellenpräfixe. Wenn Sie dies ändern möchten, können Sie yii\console\controllers\MigrateController::useTablePrefix
in der Konsolenbefehlskonfiguration auf false
.
Datenbanken
- Der MySQL-Treiber unterstützt jetzt Sekundenbruchteilgenauigkeit für temporäre Typen (MySQL> = 5.6.4 erforderlich).
- Der Oracle-Treiber unterstützt jetzt das Zurücksetzen von Sequenzen.
Helfer
yii\helpers\Inflector
gelernt, mit UTF-8 richtig zu arbeiten.- Flag
yii\mutex\FileMutex::$isWindows
für den Windows-Ball auf Unix- yii\mutex\FileMutex::$isWindows
. yii\helpers\UnsetArrayValue
, yii\helpers\ReplaceArrayValue
können jetzt nach der Serialisierung mit var_export()
wiederhergestellt werden.
Gridview
Option $filterOnFocusOut
hinzugefügt, die festlegt, ob gefiltert werden soll, wenn der Fokus verloren geht.
jQuery
Jetzt können Sie jQuery 3.3 installieren.
Mutex
- Die Häufigkeit der Versuche, eine Sperre
yii\mutex\FileMutex::acquireLock()
erhöht, wenn $timeout
. - Unterstützung für
$timeout
yii\mutex\PgsqlMutex::acquire()
in yii\mutex\PgsqlMutex::acquire()
.
Sicherheitskorrekturen
Zwei Sicherheitsprobleme wurden behoben:
- CVE-2018-14578: CSRF-Token-Validierung in
\yii\web\Request::getMethod()
- CVE-2018-19454: Übermäßige Protokollierung vertraulicher Informationen in
\yii\log\Target
Anwendungsvorlagen
- Codeception-Konfigurationen wurden sowohl in den Basis- als auch in den erweiterten Vorlagen bereinigt.
- Der erweiterten Vorlage wurde eine einfache Konfiguration für Docker hinzugefügt.
- Die erweiterte Vorlage erfordert jetzt eine neuere Version von Codeception, die nur seit PHP 7.0 funktioniert. Alte Anwendungen funktionieren wie zuvor.
Ein bisschen über Yii 3.0
Die nächste Hauptversion von Yii wird 3.0 sein. Eine ausführliche Ankündigung erfolgt später, aber vorerst kurz:
Aktualisierte Architektur : Das Framework ist in separate Pakete unterteilt .
Auf diese Weise können Sie bei ihnen sammeln, was Sie benötigen.
JavaScript-unabhängig : Zusammen mit der Reorganisation des Quellcodes wird Yii vom JavaScript-Framework im Kernel getrennt.
Für wichtige Yii-Pakete ist jQuery nicht erforderlich.
Kompatibel mit PSR : Yii 3 folgt den Empfehlungen von PHP-FIG. Viele PSRs wurden bereits implementiert: Protokollierung, Cache, DI und andere.
Yii 3.0 befindet sich in der aktiven Entwicklung. Eine detaillierte Ankündigung erfolgt nach Erreichen der Alpha-Version.