Nette Documentation Preview

syntax
Geschichte von Nette
********************

.[perex]
Die Ursprünge von Nette gehen auf das Jahr 2004 zurück, als der Autor David Grudl begann, nach einem geeigneten Framework zu suchen, um Anwendungen zu schreiben, da reines PHP nicht mehr ausreichte. Keine der damals verfügbaren Lösungen passte zu ihm, also begann er nach und nach, die Merkmale eines neuen Frameworks zu skizzieren, das später den Namen Nette erhielt.

Zu dieser Zeit gab es aktuelle Frameworks wie Symfony, Laravel oder Ruby on Rails noch nicht. In der Java-Welt war JSF (JavaServer Faces) der Standard, und im konkurrierenden .NET-Bereich war ASP.NET Webforms das dominierende Framework. Beide ermöglichten die Erstellung von Seiten mit wiederverwendbaren UI-Komponenten. David hielt ihre Abstraktionsmethoden und ihre Versuche, über das zustandslose HTTP-Protokoll mit Hilfe von Sessionen oder Postbacks Zustandslosigkeit zu schaffen, für fehlerhaft und grundlegend gescheitert. Sie verursachten viele Schwierigkeiten für Benutzer und Suchmaschinen. Wenn man zum Beispiel einen Link speicherte, war man überrascht, wenn man später andere Inhalte darunter fand.

Die Möglichkeit, Seiten aus wiederverwendbaren UI-Komponenten zusammenzustellen, faszinierte David, der sie von Delphi her kannte, einem damals beliebten Tool zur Erstellung von Desktop-Anwendungen. Ihm gefielen die Marktplätze mit Open-Source-Komponenten für Delphi. Also versuchte er, die Frage zu lösen, wie man ein Komponenten-Framework erstellen könnte, das wiederum in völliger Harmonie mit zustandslosem HTTP funktionieren würde. Er suchte nach einem Konzept, das benutzer-, SEO- und entwicklerfreundlich sein sollte. Und so wurde Nette geboren.

.[note]
Der Name Nette entstand zufällig im Badezimmer, als der Autor eine Flasche Gillette-Rasiergel entdeckte, die so gedreht war, dass nur die *llette* zu sehen war.

Es folgten Tausende von Stunden der Recherche, des Nachdenkens und des Umschreibens. In einer staubigen Garage in einem Dorf irgendwo außerhalb von Brünn entstanden die ersten Umrisse des zukünftigen Rahmens. Grundlage der Architektur war das MVC-Pattern, das damals von dem heute vergessenen PHP-Framework Mojavi verwendet und später durch den Hype um Ruby on Rails populär gemacht wurde. Eine der Inspirationsquellen war sogar das nie veröffentlichte phpBase-Framework von Honza Tichý.

Im Blog des Autors tauchten Artikel über das kommende Nette auf. Es wurde gescherzt, dass es sich um Vaporware handele. Doch dann, im Oktober 2007, stellte David Nette auf der Prager PHP-Seminar-Konferenz öffentlich vor. Aus dieser Konferenz entwickelte sich übrigens ein Jahr später die WebExpo, später eine der größten IT-Konferenzen in Europa. Schon damals präsentierte Nette stolz eine Reihe origineller Konzepte, wie das bereits erwähnte Komponentenmodell, den bidirektionalen Router, die spezielle Art der Verknüpfung zwischen den Moderatoren usw. Es gab Formulare, Authentifizierung, Caching usw. Alles wird in Nette bis heute in seinem ursprünglichen Konzept verwendet.

.[note]
Nette verwendet *Presenter* anstelle von *Controller*, weil es angeblich zu viele Wörter, die mit *con* beginnen, im Code gab (Controller, Front Controller, Control, Config, Container, ...).

Ende 2007 veröffentlichte David Grudl den Code und Nette 0.7 wurde freigegeben. Es bildete sich eine enthusiastische Gemeinschaft von Programmierern, die sich jeden Monat auf dem Posobota-Event trafen. Zu dieser Gemeinschaft gehörten viele der heutigen Koryphäen, wie zum Beispiel Ondrej Mirtes, der Autor des großartigen PHPStan-Tools. Die Entwicklung von Nette schritt voran, und in den nächsten zwei Jahren wurden die Versionen 0.8 und 0.9 veröffentlicht, die den Grundstein für fast alle heutigen Teile des Frameworks legten. Dazu gehören auch AJAX-Snippets, die Hotwire für Ruby on Rails oder Symfony UX Turbo um 14 Jahre vorausgehen.

Aber eine entscheidende Sache fehlte damals in Nette. Dependecy Injection Container (DIC). Nette benutzte einen *Service Locator* und die Absicht war, zu Dependecy Injection überzugehen. Aber wie sollte man so etwas entwerfen? David Grudl, der zu diesem Zeitpunkt noch keine Erfahrung mit DI hatte, ging zum Mittagessen mit Vasek Purchart, der DI seit etwa einem halben Jahr einsetzte. Gemeinsam diskutierten sie das Thema, und David begann mit der Arbeit an Nette DI, einer Bibliothek, die die Art und Weise, wie wir über Anwendungsdesign nachdenken, völlig revolutionierte. Der DI-Container wurde zu einem der erfolgreichsten Teile des Frameworks. Daraus entstanden zwei Spin-offs: das Neon-Format und die Schema-Bibliothek.

.[note]
Die Umstellung auf Dependency Injection hat viel Zeit in Anspruch genommen, und wir haben ein paar Jahre auf eine neue Version von Nette gewartet. Als sie schließlich herauskam, trug sie die Nummer 2. Nette Version 1 gibt es also nicht mehr.

Nette begann seine moderne Geschichte im Jahr 2012 mit der Version 2.0. Sie brachte auch Nette Database mit sich, die ein äußerst praktisches Datenbank-Tool enthielt, das jetzt Explorer heißt. Diese Bibliothek wurde ursprünglich von Jakub Vrána programmiert, dem Nachbarn von David Grudl und Autor des beliebten Adminer-Tools. Die weitere Entwicklung wurde dann von Jan Škrášek für drei Jahre übernommen.

Im Jahr 2014 wurde Nette 2.1 veröffentlicht, kurz darauf folgte Nette 2.2. Wie ist das möglich? Die Version 2.2 war die gleiche wie die Version 2.1, nur aufgeteilt in zwanzig separate Pakete. Das Composer-Tool setzte sich in der PHP-Welt durch und veränderte die Art und Weise, wie wir über die Erstellung von Bibliotheken denken. Nette hörte auf, ein Monolith zu sein und zerfiel in kleinere unabhängige Teile. Jeder Teil hat sein eigenes Repository, seinen eigenen Issue Tracker und seinen eigenen Entwicklungs- und Versionsfluss. Auf diese Weise muss Nette nicht die Absurditäten durchmachen, die bei monolithischen Frameworks üblich sind, wo eine neue Version eines Pakets herauskommt, obwohl sich nichts geändert hat. Die eigentliche Aufteilung der Git-Repositories erforderte mehrere Wochen Vorbereitung und Hunderte von Stunden an Arbeitszeit.

Nette belegte außerdem einen erstaunlichen 3. Platz in der weltweiten Umfrage des Magazins Sitepoint für das beste PHP-Framework.



{{toc:no}}
{{leftbar: @menu-common}}

Geschichte von Nette

Die Ursprünge von Nette gehen auf das Jahr 2004 zurück, als der Autor David Grudl begann, nach einem geeigneten Framework zu suchen, um Anwendungen zu schreiben, da reines PHP nicht mehr ausreichte. Keine der damals verfügbaren Lösungen passte zu ihm, also begann er nach und nach, die Merkmale eines neuen Frameworks zu skizzieren, das später den Namen Nette erhielt.

Zu dieser Zeit gab es aktuelle Frameworks wie Symfony, Laravel oder Ruby on Rails noch nicht. In der Java-Welt war JSF (JavaServer Faces) der Standard, und im konkurrierenden .NET-Bereich war ASP.NET Webforms das dominierende Framework. Beide ermöglichten die Erstellung von Seiten mit wiederverwendbaren UI-Komponenten. David hielt ihre Abstraktionsmethoden und ihre Versuche, über das zustandslose HTTP-Protokoll mit Hilfe von Sessionen oder Postbacks Zustandslosigkeit zu schaffen, für fehlerhaft und grundlegend gescheitert. Sie verursachten viele Schwierigkeiten für Benutzer und Suchmaschinen. Wenn man zum Beispiel einen Link speicherte, war man überrascht, wenn man später andere Inhalte darunter fand.

Die Möglichkeit, Seiten aus wiederverwendbaren UI-Komponenten zusammenzustellen, faszinierte David, der sie von Delphi her kannte, einem damals beliebten Tool zur Erstellung von Desktop-Anwendungen. Ihm gefielen die Marktplätze mit Open-Source-Komponenten für Delphi. Also versuchte er, die Frage zu lösen, wie man ein Komponenten-Framework erstellen könnte, das wiederum in völliger Harmonie mit zustandslosem HTTP funktionieren würde. Er suchte nach einem Konzept, das benutzer-, SEO- und entwicklerfreundlich sein sollte. Und so wurde Nette geboren.

Der Name Nette entstand zufällig im Badezimmer, als der Autor eine Flasche Gillette-Rasiergel entdeckte, die so gedreht war, dass nur die llette zu sehen war.

Es folgten Tausende von Stunden der Recherche, des Nachdenkens und des Umschreibens. In einer staubigen Garage in einem Dorf irgendwo außerhalb von Brünn entstanden die ersten Umrisse des zukünftigen Rahmens. Grundlage der Architektur war das MVC-Pattern, das damals von dem heute vergessenen PHP-Framework Mojavi verwendet und später durch den Hype um Ruby on Rails populär gemacht wurde. Eine der Inspirationsquellen war sogar das nie veröffentlichte phpBase-Framework von Honza Tichý.

Im Blog des Autors tauchten Artikel über das kommende Nette auf. Es wurde gescherzt, dass es sich um Vaporware handele. Doch dann, im Oktober 2007, stellte David Nette auf der Prager PHP-Seminar-Konferenz öffentlich vor. Aus dieser Konferenz entwickelte sich übrigens ein Jahr später die WebExpo, später eine der größten IT-Konferenzen in Europa. Schon damals präsentierte Nette stolz eine Reihe origineller Konzepte, wie das bereits erwähnte Komponentenmodell, den bidirektionalen Router, die spezielle Art der Verknüpfung zwischen den Moderatoren usw. Es gab Formulare, Authentifizierung, Caching usw. Alles wird in Nette bis heute in seinem ursprünglichen Konzept verwendet.

Nette verwendet Presenter anstelle von Controller, weil es angeblich zu viele Wörter, die mit con beginnen, im Code gab (Controller, Front Controller, Control, Config, Container, …).

Ende 2007 veröffentlichte David Grudl den Code und Nette 0.7 wurde freigegeben. Es bildete sich eine enthusiastische Gemeinschaft von Programmierern, die sich jeden Monat auf dem Posobota-Event trafen. Zu dieser Gemeinschaft gehörten viele der heutigen Koryphäen, wie zum Beispiel Ondrej Mirtes, der Autor des großartigen PHPStan-Tools. Die Entwicklung von Nette schritt voran, und in den nächsten zwei Jahren wurden die Versionen 0.8 und 0.9 veröffentlicht, die den Grundstein für fast alle heutigen Teile des Frameworks legten. Dazu gehören auch AJAX-Snippets, die Hotwire für Ruby on Rails oder Symfony UX Turbo um 14 Jahre vorausgehen.

Aber eine entscheidende Sache fehlte damals in Nette. Dependecy Injection Container (DIC). Nette benutzte einen Service Locator und die Absicht war, zu Dependecy Injection überzugehen. Aber wie sollte man so etwas entwerfen? David Grudl, der zu diesem Zeitpunkt noch keine Erfahrung mit DI hatte, ging zum Mittagessen mit Vasek Purchart, der DI seit etwa einem halben Jahr einsetzte. Gemeinsam diskutierten sie das Thema, und David begann mit der Arbeit an Nette DI, einer Bibliothek, die die Art und Weise, wie wir über Anwendungsdesign nachdenken, völlig revolutionierte. Der DI-Container wurde zu einem der erfolgreichsten Teile des Frameworks. Daraus entstanden zwei Spin-offs: das Neon-Format und die Schema-Bibliothek.

Die Umstellung auf Dependency Injection hat viel Zeit in Anspruch genommen, und wir haben ein paar Jahre auf eine neue Version von Nette gewartet. Als sie schließlich herauskam, trug sie die Nummer 2. Nette Version 1 gibt es also nicht mehr.

Nette begann seine moderne Geschichte im Jahr 2012 mit der Version 2.0. Sie brachte auch Nette Database mit sich, die ein äußerst praktisches Datenbank-Tool enthielt, das jetzt Explorer heißt. Diese Bibliothek wurde ursprünglich von Jakub Vrána programmiert, dem Nachbarn von David Grudl und Autor des beliebten Adminer-Tools. Die weitere Entwicklung wurde dann von Jan Škrášek für drei Jahre übernommen.

Im Jahr 2014 wurde Nette 2.1 veröffentlicht, kurz darauf folgte Nette 2.2. Wie ist das möglich? Die Version 2.2 war die gleiche wie die Version 2.1, nur aufgeteilt in zwanzig separate Pakete. Das Composer-Tool setzte sich in der PHP-Welt durch und veränderte die Art und Weise, wie wir über die Erstellung von Bibliotheken denken. Nette hörte auf, ein Monolith zu sein und zerfiel in kleinere unabhängige Teile. Jeder Teil hat sein eigenes Repository, seinen eigenen Issue Tracker und seinen eigenen Entwicklungs- und Versionsfluss. Auf diese Weise muss Nette nicht die Absurditäten durchmachen, die bei monolithischen Frameworks üblich sind, wo eine neue Version eines Pakets herauskommt, obwohl sich nichts geändert hat. Die eigentliche Aufteilung der Git-Repositories erforderte mehrere Wochen Vorbereitung und Hunderte von Stunden an Arbeitszeit.

Nette belegte außerdem einen erstaunlichen 3. Platz in der weltweiten Umfrage des Magazins Sitepoint für das beste PHP-Framework.