yii 2.0 wurde im vergangenen April in die Beta veröffentlicht und das Ziel für eine erste stabile Veröffentlichung wurde für die Mitte 2014 festgelegt. Die GitHub -Ausgabeliste hat 300 offene Probleme und 2913 geschlossen, während ich dies schreibe, und beide Zahlen steigen immer noch . Der Fortschritt des Meilensteins von 2.0RC lag bei 99%. Ich vermute, dass das Team nahe ist, aber wir müssen wahrscheinlich nur ein bisschen länger warten. Während wir alle warten, schauen wir uns an, was wir erwarten können, indem wir uns ein bereits verfügbares Beispiel ansehen.
yii verwendet viele Ideen aus anderen Frameworks, Sprachen und Bibliotheken: Prado, Ruby, JQuery, Symfony und Joomla werden als Inspirationsquellen anerkannt.
Die ersten Commits für YII 2.0 stammen aus dem Jahr 2011, aber die Entwicklung hat im letzten Jahr abgenommen. Das Team hat eine Umschreibung mit dem Ziel neu geschrieben, der PHP -Framework der neu neuen Generation zu werden. Es verwendet die neuesten Technologien und Funktionen wie Komponist, PSR, Namespaces, Merkmale und mehr.
etwas erwähnenswert ist, dass die Unterstützung nach der Download Seite YII Version 1.1 am 31. Dezember 2015 endet. Wir haben also etwas Zeit, um über den Übergang nachzudenken.
Anforderungen
Installation
derzeit sind zwei Anwendungsbeispiele verfügbar. Es gibt ein grundlegendes Beispiel mit einigen Seiten, einer Kontaktseite und einer Anmeldeseite. Das erweiterte Beispiel fügt eine separate Front- und Backend-, Datenbankinteraktion, Anmeldung und Kennwortwiederherstellung hinzu.
Ich beginne mit dem grundlegenden Beispiel. Wenn Sie sich YII zuvor angesehen haben, werden Sie dasselbe grundlegende webapp erkennen, mit dem Yii 1.1 mitgekommen ist. Installieren Sie das Grundbeispiel mit dem Komponisten mit dem folgenden Befehl:
composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic
Sie können dann überprüfen, ob Ihr Server die Anforderungen erfüllt, indem Sie http: //localhost/yii2-app-basic/requirements.php öffnen. Die tatsächliche Anwendung wird dann von http: // localhost/yii2-app-basic/web/ausgeführt.
Dies ist die erste wichtige Sache, die Sie bemerken müssen: Die Idee ist, dass Sie das Dokumentenrouch Ihrer Anwendung auf/path/to/application/web festlegen, ähnlich wie bei Symfony. Das Verzeichnislayout hat sich von Version 1.1 ein wenig geändert. Wenn Sie genau hinschauen, ist die Änderung sinnvoll und verbessert die Sicherheit Ihrer Anwendung.
Zuvor würden alle Anwendungskomponenten (Modelle, Ansichten, Controller, Framework- und Lieferantenbibliotheken) im Dokumentenrouch im geschützten Ordner unter dem Dokument root leben. Auf diese Weise hing die Sicherheit von .htaccess -Dateien ab, die respektiert wurden, was bedeutete, dass Ihre Anwendung bei Nginx standardmäßig zu 100% unsicher war. Das Verschieben aller Anwendungskomponenten vom Dokumentwurzel verhindert, dass der Webserver Ihre Anwendungskomponenten an einen Benutzer sendet.Sie könnten nach den tatsächlichen Framework -Quellen suchen. Das Framework ist eine Komponente, die mit dem Komponisten installiert wurde, sodass sie sich im Verzeichnis von compendoryiisftyii befindet. Hier finden Sie viel mehr, aber im Moment werden wir es einfach dabei lassen.
Ändern wir vorerst die lokale Webserverkonfiguration und setzen Sie das Dokumentroot auf/path/to/application/web. Ich habe einen virtuellenHost http: //yii2-app-basic.localhost/ hinzugefügt, aber tun, was Sie für Ihre eigene Situation geeignet halten. Die Standardkonfiguration wird so eingestellt, dass die Skriptdatei in der URL ausgeblendet wird. Wenn Sie Apache verwenden, müssen Sie dem Web -Verzeichnis eine .htaccess -Datei hinzufügen, um Apache zum Umschreiben zu unterweisen. Es ist standardmäßig nicht vorhanden.
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php
Sie beginnen mit der Startseite, einer Statik über Seite, einer Kontaktseite und einer Anmeldeseite. Die Kontaktseite und das Anmeldesformular haben die gleiche Funktionalität wie zuvor. CAPTCHA -Code, Formularvalidierung und zwei Benutzer zur Anmeldung zur Anmeldung zur Anmeldung sind dieselben wie zuvor. Nahe nichts. Trotzdem ist es ein guter Anfang.
Das Design der grundlegenden Anwendung änderte sich dramatisch. Zuvor erhalten Sie eine Anwendung, die auf dem Blueprint CSS -Framework basiert, während wir jetzt mit Twitter Bootstrap beginnen. Verbesserung? Es wird wahrscheinlich mit Blueprint verglichen, aber wiederum ist Bootstrap viel mehr als die Blaupause jemals versucht zu sein.
Bootstrap bietet Ihnen alle Arten von Anwendungskomponenten und beschleunigt eine Anwendung. Einige mögen andererseits argumentieren, dass alle Websites mit Bootstrap gleich aussehen (Themen beheben dies nur teilweise), und es wird auch Ihre Website größer. In jedem Fall erfolgt die Integration mit YII 2.0 mit der Erweiterung der YII2-Bootstrap. Dies macht es sehr einfach, die Bootstrap -Komponenten in Ihre Ansichten zu integrieren.
Eine andere Sache, die Sie bemerken werden, ist die Debug -Leiste unten. Es ist standardmäßig installiert und aktiviert, genau wie in Symfony. Es ermöglicht einen schnellen Zugriff auf viele Informationen zu Ihrer Konfiguration, Anforderungen und Anwendungsprotokollierung. Es wird auch eine Geschichte von Anfragen mit Debug -Informationen führen.
yii behandelt Fehler, die sich normalerweise als PHP normalerweise tun würden. YII wandelt alle Fehler (tödlich und nicht tödlich) in Ausnahmen um. Diese werden behandelt, indem Sie eine aufschlussreiche Ausgabe machen, die Sie auf den Punkt hinweist, an dem Sie durcheinander gebracht wurden oder Ihr Code eine Mitteilung generiert hat. Sogar analysieren Sie Fehler, für die YII 1.1 auf die grundlegenden PHP -Fehler zurückgreifen würde, erhalten Sie einen schön gerenderten Überblick über Ihren Code. Dies ist etwas, was die meisten von uns zu schätzen wissen.
gii ist ebenfalls erneut vorhanden und standardmäßig aktiviert.
gii hilft Ihnen, indem Sie Code generieren, mit dem Sie beginnen können, ein weiteres großartiges Tool, um Ihre Entwicklung zu beschleunigen. Es generiert Modelle und Controller für Sie. Der CRUD -Generator geht noch einen Schritt weiter und generiert einen vollständigen MVC -Satz für alle Aktionen. GII wird auch Code generieren, das besser für die Internationalisierung (i18n) geeignet ist, indem Sie sofort die Funktion yii :: t () einfügen, in der Sie sie benötigen.
Die grundlegende Anwendung wird jetzt auch mit einer einfachen Befehlszeilenanwendung geliefert, auf die Sie erstellen können. Yii 1.1 hat dies bereits unterstützt, aber Sie müssten ein Beispiel aus dem Wiki erhalten.
Das finden Sie in der grundlegenden Anwendung. Es gibt auch ein -Anwendungsbeispiels . Es hat eine etwas andere Struktur, fügt Ihrer Anwendung jedoch noch mehr Funktionen hinzu:
Setzen Sie den Blick auf die grundlegende Version fort, lassen Sie uns einen genaueren Blick auf den Code werfen…
hat sich viel geändert. Einige Änderungen könnten Sie zunächst verwirren, aber ich finde die meisten Änderungen sinnvoll und sind leicht zu akzeptieren. Hier sind einige der Änderungen, die ich interessant, lustig oder rätselhaft empfunden habe.
Die Anforderung von PHP 5.4 machte einige Änderungen möglich; Die Array -Short -Tags sind verfügbar. Es ist auch sicher, die Echo -Short -Tags in Ansichten zu verwenden, da dies nicht mehr von den Konfigurationseinstellungen abhängt.
composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic
Eine kleine Änderung, aber eine, die Sie schnell treffen werden; Vorher verwenden Sie Yii :: App (), um auf die Anwendungsinstanz und die Komponenten zuzugreifen. In Yii 2.0 änderte sich dies von einer statischen Funktion zu einer statischen Variablen yii :: $ App.
Die Übersetzungsfunktion yii :: t () ist immer noch bei uns. Es weist YII an, die I18N -Komponente zu verwenden, um den mitgelieferten Text in die aktuelle verwendete Sprache zu übersetzen. Sie können es auch anweisen, Variablen zu ersetzen.
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php
Die Formatierung und Styling der Platzhalter wurde ernsthaft überarbeitet, was mehr Formatierungsoptionen ermöglicht. Einige Beispiele:
<span><span><?php </span></span><span><span>$elements = array(1,2,3,4); //Yii 1.1 </span></span><span><span>$elements = [1,2,3,4]; //Yii 2.0 </span></span><span><span>?></span> </span><span><span><?php echo $someVar; ?></span> //Yii 1.1 </span><span><span><?= $someVar ?></span> //always safe to use in Yii 2.0</span>
Aufgrund dieser Platzhalterformatierung ist die datetimeFormatter verschwunden:
<span><span><?php </span></span><span><span>echo `Yii<span>::</span>t('app', 'Hello, {username}!', [ </span></span><span> <span>'username' => $username, </span></span><span><span>]); </span></span><span><span>?></span></span>
Diese Funktionalität wird von der Intensivbibliothek geliefert. Die YII -Dokumentation nennt die Originaldokumentation dafür: „ziemlich kryptisch“. Ich wage Sie, es zu lesen und zu verstehen. Hoffen wir, dass die YII -Dokumentation eine lesbare Version rechtzeitig enthält.
zuvor wäre AccessControl () eine Funktion Ihres Controllers, wenn Sie die YII -Zugriffskontrollfunktionalität verwenden möchten. Mit yii 2.0 ist die Zugriffskontrolle Teil des Verhaltens des Controllers ():
<span><span><?php </span></span><span><span>echo <span>\Yii</span>::t('app', '{n, number} is spelled as {n, spellout}', ['n' => 81]); </span></span><span><span>echo <span>\Yii</span>::t('app', 'You are {n, ordinal} in line, please hold.', ['n' => 3]); //Will echo "You are 3rd in line, please wait.". </span></span><span><span>echo <span>\Yii</span>::t('app', 'There {n, plural, =0{are no cats} =1{is one cat} other{are # cats}}!', array( </span></span><span> <span>'n' => 14, </span></span><span><span>)); </span></span><span><span>?></span></span>
Dies ist fast identisch mit der Art und Weise, wie es in Yii 1.1 war.
Ich habe bemerkt, dass der Beispielcode (nicht das Framework selbst!) Viele Docblocks fehlt und viele @Inheritdoc -Kommentare enthält. Dies ist nicht das, was Sie von einem Beispiel erwarten, aber ich gehe davon aus, dass dies rechtzeitig repariert wird.
Das Basismodell (zuvor Cmodel) änderte sich nicht sehr. Szenarien ermöglichen es Ihnen nun, die Durchsetzung von Validierungsregeln zu ändern. Sie können ändern, was auf Ihrem aktuellen Szenario validiert werden muss (d. H. Ein Modell mit unterschiedlichen Regeln, wenn sie von vorne oder Backend verwendet werden).
Der abgeleitete Activerecord wurde jedoch ernsthaften Veränderungen durchgesetzt. Die Syntax für die Suche mit ActiveCord wurde eher zu Schreibfragen, da CDBCRiteria verschwunden ist. Es wurde durch ActiveQuery ersetzt, das das Abrufen von Informationen einfacher ermöglichte:
<span><span><?php </span></span><span><span>//Previously in Yii 1.1 </span></span><span><span>Yii<span>::</span>app()->dateFormatter->formatDateTime(time(), 'medium', 'medium'); </span></span><span> </span><span><span>//In Yii 2.0 </span></span><span><span>echo <span>\Yii</span>::t('app', 'The date is {0, date, short}', time()); //uses the pre-defined 'short' notation (i18n save) </span></span><span><span>echo <span>\Yii</span>::t('app', 'The date is {0, date, YYYY-MM-dd}', time()); //or define your own notation </span></span><span><span>?></span></span>
Beziehungen hat sich ebenfalls dramatisch geändert. Nehmen wir zum Beispiel eine Website mit Bloggern, die Artikel veröffentlichen, die Benutzer kommentieren. Die Relations -Definitionen für die Autorentabelle werden nachstehend beschrieben. Ich beginne damit, wie es in yii 1.1:
aussah.composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic
Wie Sie sehen können, definieren Sie alle Beziehungen eines aktiven Datensatzes in einem großen Array. In YII 2.0 müssen Sie Getter -Methoden definieren, die ein ActiveQuery -Objekt für all diese Beziehungen zurückgeben. Sie müssen das Schlüsselwort "durch" verwenden, um eine Beziehung zwischen einer Vermittlertabelle zu definieren.
Sie haben jetzt zwei Optionen, um dies zu definieren. Normalerweise verwenden Sie die via () -Methode in einer Beziehungsfunktion. Sie können die Beziehung auch mit der Viatable () -Methode definieren, wenn Sie die Daten nur nach der Pivot -Tabelle benötigen. Gleiches Beispiel wie oben, aber jetzt für YII 2.0:
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php
Dies ist ein ziemlich einfaches Beispiel. Das Definieren der Beziehungen durch die Getter -Funktionen, die ActiveQuery -Objekte zurückgeben, ermöglicht viel mehr. Sie können beispielsweise eine bestimmte Funktion hinzufügen, die eine Abfrage für Beiträge ausführt, die> 50 Kommentare erhalten, indem Sie einen Where () -Anruf in der zurückgegebenen ActiveQuery hinzufügen.
Eine interessante Ergänzung ist die Möglichkeit, Cross -DBMS -Beziehungen zu definieren. Sie können die Beziehungen zwischen MySQL und MongoDB oder Redis definieren und in Ihrer Anwendung als ein Objekt verwenden.
Die Hauptsache in Ansichten ist, dass $ dies nicht mehr auf die Controller -Instanz bezieht. In einer Ansicht, $ Dies ist eine Instanz des YiiWebView -Objekts. Der Controller ist über $ this-> Kontext zugänglich.
Wie ich bereits sagte; PHP 5.4 macht das kurze Echo -Tag konsequent verfügbar. Dies macht die Ansichten, die aus gemischtem PHP und HTML bestehen;
<span><span><?php </span></span><span><span>$elements = array(1,2,3,4); //Yii 1.1 </span></span><span><span>$elements = [1,2,3,4]; //Yii 2.0 </span></span><span><span>?></span> </span><span><span><?php echo $someVar; ?></span> //Yii 1.1 </span><span><span><?= $someVar ?></span> //always safe to use in Yii 2.0</span>
Die Funktionen von Render () und RenderPartial () haben sich ebenfalls geändert. Bevor es die gerenderte Ausgabe automatisch wiederholt und Sie einen zusätzlichen Parameter hinzufügen, um die gerenderte Ausgabe als Zeichenfolge zu erhalten. Yii 2.0 wird immer eine Zeichenfolge auf Render () zurückgeben-wie Anrufe, was sie mit der Art und Weise, wie sich Widgets verhalten, übereinstimmen.
Sollten Sie in Betracht ziehen, Ihre YII 1.1 -Anwendung auf yii 2.0 rechtzeitig zu aktualisieren?
Bruno Škvorc hat kürzlich hier auf SitePoint über den Legacy -Code geschrieben. Er argumentiert, dass ein Umschreiben, das in 2 Monaten durchgeführt werden kann, in Betracht gezogen werden sollte - , insbesondere Wenn die von Ihnen verwendete Software geschäftskritisch ist. Ich stimme ihm zu und schlägt vor, dass Sie es in Betracht ziehen, wenn Sie sich ernsthaft über Ihre Bewerbung informieren und sie über das Ende des Lebens von YII 1.1 hinaus halten möchten. Aber wie immer; Es hängt von Ihrer Situation ab.
Es gibt eine spezielle Seite, die sich für die Aktualisierung von YII auf der YII -Website widmet. Das größte Problem sind vorerst Ihre Erweiterungen. Wenn Sie sich auf viele Erweiterungen verlassen, fällt es Ihnen schwer, dass die Community einige Zeit dauert, um die Erweiterungen für YII 2.0 zu schreiben. Wenn Sie ein echter Profi sind, können Sie sich natürlich die Erweiterungen, die Sie verwenden, ernsthaft ansehen, und in Betracht ziehen (wieder).
Das Migrationshandbuch enthält einen Abschnitt zum Ausführen von YII 1.1 und YII 2.0 in einer Anwendung. Für große Projekte ist dies ein guter Weg, um einen sicheren Migrationspfad zu schaffen. Migrieren Sie Ihren generischen Code in YII 2.0 und nehmen Sie sich Zeit für komplexere oder erweiterte gefüllte Teile.
Über den endgültigen Leitfaden für Yii 2.0 geht es mir immer enthusiastischer, mit YII 2.0 zu beginnen. Ich musste mich bereits daran hindern, es in einem neuen Projekt zu verwenden, weil ich keine Probleme mit dem Vorproduktionscode riskieren konnte.
Die Dokumentationsqualität für yii 2.0 verbesserte sich von yii 1.1. Es fiel mir schwer, Dinge herauszufinden, als ich vor ein paar Jahren mit Yii 1.1 begann, und ich bin der Meinung, dass die Dokumentation umfangreicher ist als zuvor.
Haben Sie sich Yii 2.0 bereits angesehen oder vielleicht sogar etwas damit gebaut? Bitte sagen Sie uns, worauf Sie gestoßen sind. Ich würde gerne Ihre Erfahrungen kennen!
Was ist der YII 2.0 -Debugger und wie funktioniert es? Ihre Anwendungen. Es sammelt und zeigt Informationen zu jeder Anforderung an Ihre Anwendung, einschließlich der ausgeführten SQL -Abfragen, der Anforderung und der Antwortdaten sowie der Leistungssteuerdaten. Sie können auf diese Informationen über ein Panel unten auf den Seiten Ihrer Anwendung zugreifen. , die mit dem Composer Package Manager installiert werden können. Nach der Installation können Sie diese Erweiterungen genau wie die integrierten Merkmale von YII verwenden. Die YII -Community hat eine breite Palette von Erweiterungen entwickelt, die zusätzliche Funktionen liefern, z. B. Benutzerauthentifizierung, Formularvalidierung und Datenbankabstraktion.
Wie kann ich meine YII 2.0 -Anwendungen testen? Basierend auf Phpunit und Selen. Es unterstützt sowohl Unit -Tests als auch Funktionstests. Sie können Testfälle schreiben, um Ihre Modelle, Ansichten und Controller zu testen. Das Testframework bietet auch Methoden zum Simulieren von Benutzereingaben und zur Überprüfung der Ausgabe.
Das obige ist der detaillierte Inhalt vonWas zu erwarten von yii 2.0 zu erwarten ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!