Heim >Backend-Entwicklung >PHP-Tutorial >7 Gründe für die Auswahl des Yii 2 -Frameworks
Ende letzten Jahres veröffentlichte SitePoint einen Artikel, in dem die Top -PHP -Frameworks hervorgehoben wurden. Für die Nummer vier befand sich das yii (ausgesprochen yee ) Framework. Zu dieser Zeit betrug die neueste Version des verfügbaren Framework 1.1.14. Vor kurzem wurde Yii 2.0 zur Verfügung gestellt, sodass Sie es in der Produktion verwenden können.
Während wir es kürzlich behandelt haben, als es noch im RC -Status war, hat es nur den vollständigen Status der Veröffentlichung erreicht, und wir haben das Gefühl, dass es Zeit ist, das Thema mit einigen Gründen für die Auswahl der Alternativen erneut zu besuchen.
Für Webentwickler ist Zeit Geld und niemand möchte seine kostbare Zeit für einen komplizierten Installations- und Konfigurationsprozess verbringen.
Die Installation wird mit einem Komponisten behandelt. Wenn Sie eine Beschreibung des Installationsprozesses wünschen, hat SitePoint kürzlich hier einen großartigen Artikel veröffentlicht. Ich neige dazu, die Verwendung der grundlegenden Anwendungsvorlage zu bevorzugen, auch wenn meine Website über eine separate Front- und Backend-Komponente verfügt. Stattdessen verwenden ich ein Modul für den Backend -Teil meiner Websites. (YII-Module werden am besten als Mini-Anwendungen beschrieben, die sich in Ihrer Hauptanwendung befinden.)
Hinweis : Viele der Verzeichnisreferenzen in späteren Beispielen verwenden die Verzeichnisstruktur aus der einfachen Vorlage.
yii ist ein reines OOP -Framework und nutzt einige der fortgeschritteneren Merkmale von PHP, darunter späte statische Bindung, SPL -Klassen und -Schnitterflächen sowie anonyme Funktionen.
Alle Klassen sind namensspasiert, sodass Sie den pSR-4-konformen Autoloader nutzen können. Das bedeutet, dass die HTML -Helferklasse von YII so einfach ist wie:
<span>use yii<span>\helpers\Html</span>;</span>
yii ermöglicht es Ihnen auch, Aliase zu definieren, um Ihre Namespaces zu vereinfachen. Im obigen Beispiel lädt diese Verwendungsanweisung eine Klassendefinition, die standardmäßig im Verzeichnis/Anbieter/Yiisoft/yii2/Helpers lokalisiert ist. Dieser Alias ist in der Basisyii -Klasse in Zeile 79:
definiert<span>use yii<span>\helpers\Html</span>;</span>
Das Framework selbst wird mit Composer installiert, ebenso wie seine Erweiterungen. Sogar der Prozess der Veröffentlichung von Erweiterungen ist so einfach wie das Erstellen Ihres eigenen Composers.json, das Hosting Ihres Codes bei GitHub und das Auflisten Ihrer Erweiterung auf Packagist.
yii ist wie ein Anzug, der aus dem Rack toll aussieht, aber auch sehr einfach zu maßgeschneidert ist, um Ihren Anforderungen zu entsprechen. Praktisch jede Komponente des Frameworks ist erweiterbar. Ein einfaches Beispiel ist die Zugabe einer eindeutigen Körper -ID zu Ihren Ansichten. (Wenn Sie wissen möchten, warum Sie dies vielleicht tun möchten, schauen Sie sich diesen Artikel an.)
Erstens würde ich eine Datei in meinem AppComponents -Verzeichnis mit der Namensansicht.php erstellen und Folgendes hinzufügen:
<span>public static $aliases = ['@yii' => __DIR__];</span>
Dann würde ich in meiner Hauptlayout -Datei (AppViewSlayoutsMain.php) dem Körper Tag meines HTML Folgendes hinzufügen:
<span>namespace app<span>\components</span>; </span> <span>class View extends yii<span>\web\View</span> { </span> <span>public $bodyId; </span> <span>/* Yii allows you to add magic getter methods by prefacing method names with "get" */ </span> <span>public function getBodyIdAttribute() { </span> <span>return ($this->bodyId != '') ? '' : ''; </span> <span>} </span> <span>}</span>
Und schließlich würde ich meiner Hauptkonfigurationsdatei Folgendes hinzufügen, damit Yii wissen, dass sie meine erweiterte Ansichtsklasse anstelle ihrer eigenen Standardeinstellung verwenden:
<span><span><span><body</span> <span><span><?=$this->BodyIdAttribute?></span></span>></span></span>
yii ist eng in die Codekzeption integriert. Die Codecception ist ein großartiges PHP -Test -Framework, mit dem die Erstellung von Einheiten-, Funktions- und Akzeptanztests für Ihre Anwendung vereinfacht wird. Weil Sie automatisierte Tests für alle Ihre Anwendungen schreiben, oder?
Mit der Codecception -Erweiterung können Sie Ihre Anwendung während des Tests konfigurieren. Bearbeiten Sie einfach die Datei für /tests/_config.php, um Ihre Testanwendung zu konfigurieren. Zum Beispiel:
<span>return [ </span> <span>// ... </span> <span>'components' => [ </span> <span>// ... </span> <span>'view' => [ </span> <span>'class' => 'app\components\View' </span> <span>] </span> <span>] </span><span>];</span>
Verwenden dieser Konfiguration würde Folgendes auftreten:
Ein spezielles Modul für das YII -Framework existiert auch in der Codekzeption. Es fügt der Testguy -Klasse verschiedene Methoden hinzu, die Ihnen helfen, während Funktionstests mit aktiven Aufzeichnungen (YII -ORM) zu arbeiten. Wenn Sie beispielsweise sehen möchten, ob Ihr Registrierungsformular einen neuen Benutzer mit dem Benutzernamen „Testuser“ erfolgreich erstellt hat, können Sie Folgendes tun:
<span>return [ </span> <span>'components' => [ </span> <span>'mail' => [ </span> <span>'useFileTransport' => true, </span> <span>], </span> <span>'urlManager' => [ </span> <span>'showScriptName' => true, </span> <span>], </span> <span>'db' => [ </span> <span>'dsn' => 'mysql:host=localhost;dbname=mysqldb_test', </span> <span>], </span> <span>], </span><span>];</span>
Sicherheit ist ein entscheidender Bestandteil jeder Webanwendung, und zum Glück hat YII einige großartige Funktionen, um Ihren Geist zu erleichtern.
yii wird mit einer Sicherheitsanwendungskomponente ausgestattet, die verschiedene Methoden enthüllt, um eine sichere Anwendung zu erstellen. Einige der nützlicheren Methoden sind:
yii überprüft automatisch ein gültiges CSRF -Token auf allen unsicheren HTTP -Anforderungsmethoden (putten, post, löschen) und generiert und geben ein Token aus, wenn Sie die ActiveForm :: begin () -Methode verwenden, um Ihr Eröffnungsformular -Tag zu erstellen. Diese Funktion kann deaktiviert werden, indem Ihre Hauptkonfigurationsdatei bearbeitet wird, um Folgendes zu enthalten:
<span>use yii<span>\helpers\Html</span>;</span>
Um vor XSS zu schützen, bietet YII eine weitere Helferklasse namens HTMLPurifier. Diese Klasse verfügt über eine einzelne statische Methode mit dem Namen prozess und filtert Ihre Ausgabe mit der gleichnamigen beliebten Filterbibliothek.
yii enthält auch Konferenzklassen für die Benutzerauthentifizierung und Autorisierung. Die Autorisierung ist in zwei Arten unterteilt: ACF (Access Control Filter) und RBAC (rollenbasierte Zugriffskontrolle).
Der einfachere der beiden ist ACF und wird durch Hinzufügen der Verhaltensmethode Ihres Controllers implementiert:
<span>public static $aliases = ['@yii' => __DIR__];</span>
Der vorhergehende Code teilt mit DefaultControllerto mit, ermöglicht den Gastnutzern den Zugriff auf die Anmeldungs- und Anzeigenaktionen, jedoch nicht auf die Aktion erstellen. (Ist ein Alias für anonyme Benutzer, und @ bezieht sich auf authentifizierte Benutzer).
rBAC ist eine leistungsstärkere Methode, um anzugeben, welche Benutzer in Ihrer Anwendung bestimmte Aktionen ausführen können. Dazu gehört es, Rollen für Ihre Benutzer zu erstellen, Berechtigungen für Ihre App zu definieren und diese Berechtigungen für ihre beabsichtigten Rollen zu ermöglichen. Sie können diese Methode verwenden, wenn Sie eine Moderatorrolle erstellen möchten, und allen Benutzern, die dieser Rolle zugewiesen sind, Artikel zulassen, Artikel zu genehmigen.
Sie können auch Regeln mit RBAC definieren, mit denen Sie unter bestimmten Bedingungen Zugriff auf bestimmte Aspekte Ihres Antrags gewähren können. Zum Beispiel können Sie eine Regel erstellen, die es Benutzern ermöglicht, ihre eigenen Artikel zu bearbeiten, jedoch nicht die von anderen erstellten.
Die meisten Projekte beinhalten eine bestimmte Menge repetitiver Aufgaben, mit denen niemand Zeit verschwenden möchte. YII gibt uns einige Tools, mit denen Sie weniger Zeit für diese Aufgaben verbringen können, und mehr Zeit, um Ihre Bewerbung an die Anforderungen Ihrer Kunden anzupassen.
Eines der leistungsstärksten dieser Werkzeuge heißt „GII“. GII ist ein webbasiertes Code-Gerüst-Tool, mit dem Sie schnell Codevorlagen erstellen können:
gii ist sehr konfigurierbar. Sie können es so einstellen, dass sie nur in bestimmten Umgebungen geladen werden. Bearbeiten Sie einfach Ihre Webkonfigurationsdatei wie folgt:
<span>use yii<span>\helpers\Html</span>;</span>
Dies stellt sicher, dass GII nur lädt, wenn die YII -Umgebungsvariable auf Entwicklung festgelegt wird und dass sie nur dann geladen wird, wenn sie über Localhost zugegriffen wird.
Schauen wir uns jetzt den Modellgenerator an:
Der Tabellenname verwendet ein Widget der Typea -Kopf, um zu erraten, mit welcher Tabelle Ihr Modell zugeordnet ist, und alle Felder verfügen über einen Rollover -Tooltip, um Sie daran zu erinnern, wie Sie sie ausfüllen können. Sie können den Code einsetzen, bevor Sie GII bitten, ihn zu generieren, und alle Codevorlagen sind vollständig anpassbar.
Es stehen auch mehrere Befehlszeilen-Tools zur Verfügung, mit denen Codevorlagen für Datenbankmigrationen, Nachrichtenübersetzungen (I18N) und Datenbankvorrichtungen für Ihre automatisierten Tests erstellt werden können. Zum Beispiel können Sie mit diesem Befehl eine neue Datenbankmigrationsdatei erstellen:
<span>public static $aliases = ['@yii' => __DIR__];</span>
Dies erstellt eine neue Migrationsvorlage in {Appdir}/Migrationen, die ungefähr so aussieht:
<span>namespace app<span>\components</span>; </span> <span>class View extends yii<span>\web\View</span> { </span> <span>public $bodyId; </span> <span>/* Yii allows you to add magic getter methods by prefacing method names with "get" */ </span> <span>public function getBodyIdAttribute() { </span> <span>return ($this->bodyId != '') ? '' : ''; </span> <span>} </span> <span>}</span>
Nehmen wir also an, ich wollte dieser Tabelle ein paar Spalten hinzufügen. Ich würde einfach der UP -Methode Folgendes hinzufügen:
<span><span><span><body</span> <span><span><?=$this->BodyIdAttribute?></span></span>></span></span>
und um sicherzustellen, dass ich die Migration umkehren kann, würde ich die Down -Methode bearbeiten:
<span>return [ </span> <span>// ... </span> <span>'components' => [ </span> <span>// ... </span> <span>'view' => [ </span> <span>'class' => 'app\components\View' </span> <span>] </span> <span>] </span><span>];</span>
Erstellen der Tabelle würde einfach das Ausführen eines Befehls in der Befehlszeile beinhalten:
<span>return [ </span> <span>'components' => [ </span> <span>'mail' => [ </span> <span>'useFileTransport' => true, </span> <span>], </span> <span>'urlManager' => [ </span> <span>'showScriptName' => true, </span> <span>], </span> <span>'db' => [ </span> <span>'dsn' => 'mysql:host=localhost;dbname=mysqldb_test', </span> <span>], </span> <span>], </span><span>];</span>
und um die Tabelle zu entfernen:
<span>$I->amOnPage('register'); </span><span>$I->fillField('username', 'testuser'); </span><span>$I->fillField('password', 'qwerty'); </span><span>$I->click('Register'); </span><span>$I->seeRecord('app\models\User', array('name' => 'testuser'));</span>
Jeder weiß, dass eine langsame Website verärgerte Benutzer erstellt. Daher bietet YII Ihnen mehrere Tools, mit denen Sie mehr Geschwindigkeit aus Ihrer Anwendung herausholen können.
Alle Cache -Komponenten von YII erstrecken sich von yii/caching/cache, sodass Sie bei Verwendung einer gemeinsamen API das gewünschte Caching -System auswählen können. Sie können sogar mehrere Cache -Komponenten gleichzeitig registrieren. YII unterstützt derzeit Datenbank- und Dateisystem -Caching sowie APC, Memcache, Redis, Wincache, XCache und Zend Data Cache.
standardmäßig führt Yii eine zusätzliche Abfrage aus, um das Schema der bei der Generierung Ihres Modells beteiligen Tabellen zu bestimmen. Sie können die Anwendung auf das Schema einstellen, indem Sie Ihre Hauptkonfigurationsdatei wie folgt bearbeiten:
<span>return [ </span> <span>'components' => [ </span> <span>'request' => [ </span> <span>'enableCsrfValidation' => false, </span> <span>] </span> <span>];</span>
Schließlich verfügt YII über ein Befehlszeilenwerkzeug, um die Minifikation von Frontenden -Vermögenswerten zu erleichtern. Führen Sie einfach den folgenden Befehl aus, um eine Konfigurationsvorlage zu generieren:
<span>use yii<span>\filters\AccessControl</span>; </span> <span>class DefaultController extends Controller { </span> <span>// ... </span> <span>public function behaviors() { </span> <span>return [ </span> <span>// ... </span> <span>'class' => AccessControl<span>::</span>className(), </span> <span>'only' => ['create', 'login', 'view'], </span> <span>'rules' => [ </span> <span>[ </span> <span>'allow' => true, </span> <span>'actions' => ['login', 'view'], </span> <span>'roles' => ['?'] </span> <span>], </span> <span>[ </span> <span>'allow' => true, </span> <span>'actions' => ['create'], </span> <span>'roles' => ['@'] </span> <span>] </span> <span>] </span> <span>]; </span> <span>} </span> <span>// ... </span><span>}</span>
Bearbeiten Sie dann die Konfiguration, um anzugeben, welche Tools Sie möchten, um Ihre Minifikation auszuführen (z. B. Closeure Compiler, Yui -Kompressor oder UglifyJs). Die generierte Konfigurationsvorlage sieht so aus:
<span>if (YII_ENV_DEV) { </span> <span>// ... </span> <span>$config['modules']['gii'] = [ </span> <span>'class' => 'yii\gii\Module', </span> <span>'allowedIPs' => ['127.0.0.1', '::1'] </span> <span>] </span><span>}</span>
Führen Sie als nächstes diesen Befehl Konsole aus, um die Komprimierung durchzuführen.
yii migrate<span>/create create_user_table</span>
und schließlich bearbeiten Sie Ihre Webanwendungskonfigurationsdatei, um die komprimierten Assets zu verwenden.
<span><span><?php </span></span><span> </span><span> <span>use yii<span>\db\Schema</span>; </span></span><span> </span><span> <span>class m140924_153425_create_user_table extends <span>\yii\db\Migration</span> </span></span><span> <span>{ </span></span><span> <span>public function up() </span></span><span> <span>{ </span></span><span> </span><span> <span>} </span></span><span> </span><span> <span>public function down() </span></span><span> <span>{ </span></span><span> <span>echo "m140924_153425_create_user_table cannot be reverted.\n"; </span></span><span> </span><span> <span>return false; </span></span><span> <span>} </span></span><span><span>}</span></span>
Hinweis: Sie müssen diese externen Tools manuell herunterladen und installieren.
Wie bei jedem guten Framework hilft Ihnen YII, moderne Webanwendungen schnell zu erstellen und sicherzustellen, dass sie eine gute Leistung erbringen. Es drückt Sie dazu, sichere und überprüfbare Websites zu erstellen, indem Sie viel für Sie schwere Heben erstellen. Sie können die meisten Funktionen genauso genauso verwenden, wie sie bereitgestellt werden, oder Sie können jeden so ändern, dass Sie Ihren Anforderungen entsprechen. Ich ermutige Sie wirklich, es für Ihr nächstes Webprojekt zu überprüfen!
Hast du Yii 2 versucht? Willst du? Lass es uns wissen!
Wie unterstützt Yii 2 Framework die schnelle Entwicklung? Werkzeug, GII. GII ermöglicht es Entwicklern, schnell Code für Modelle, Controller, Formulare, Module und Erweiterungen zu generieren. Dies reduziert die Zeit, die zum Schreiben von Boilerplate-Code erforderlich ist, erheblich, sodass Entwickler sich mehr auf die Geschäftslogik konzentrieren können. ist so konzipiert, dass er nahtlos mit Code von Drittanbietern arbeitet. Es verwendet den Komponisten-Abhängigkeits-Manager, der es einfach macht, Bibliotheken und Pakete von Drittanbietern in Ihre Yii 2-Anwendung zu integrieren. hat ein umfassendes Fehlerbehebung und Protokollierungssystem. Es kann sowohl PHP -Fehler als auch Ausnahmen behandeln und bietet eine Vielzahl von Protokollierungszielen, einschließlich Dateien, E -Mails und Browserkonsolen. Dies erleichtert das Debuggen und Behebung von Problemen in Ihrer Anwendung.
Das obige ist der detaillierte Inhalt von7 Gründe für die Auswahl des Yii 2 -Frameworks. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!