Warum 2013 das Jahr von PHP ist

2012 war ein hervorragendes Jahr für die PHP-Community, dank vieler dringend benötigter Funktionen, die in Version 5.4 hinzugefügt wurden, sowie aufgrund der unzähligen Projekte, die PHP auf die nächste Stufe bringen.

In diesem Artikel möchte ich ein paar der Probleme, die die Leute mit PHP in der Vergangenheit hatten, besprechen und einen kurzen Einblick geben, warum 2013 vielleicht das Jahr von PHP ist!


Warum die Feindseligkeit??

Das mag Sie überraschen, aber viele Leute haben ein schlechtes Gefühl gegenüber PHP-Entwicklern und der Sprache insgesamt. Sie wissen wahrscheinlich genau, was ich meine, wenn Sie überlegt haben, in den letzten paar Jahren Ruby zu lernen, aufgrund eines Gefühls von Gruppenzwang.

Bevor Sie jedoch Änderungen vornehmen, müssen Sie sich die Frage stellen: "Warum hat PHP ein solches Stigma?"

Nun, wie bei vielen wichtigen Fragen des Lebens gibt es keine eindeutige Antwort. Nachdem Sie ein wenig online nach einigen PHP-Argumenten gesucht haben, werden Sie feststellen, dass etwa 80% der Argumente gegen PHP auf Unwissenheit beruhen, in der einen oder anderen Form.

Etwa achtzig Prozent der Argumente gegen PHP basieren auf Ignoranz.

Die Anfänger

Es gibt Anfänger, die nicht wirklich wissen, wie PHP funktioniert. Dies führt zu Fragen wie "Warum können Sie mit PHP nicht auf Schaltflächenereignisse hören??,"und ähnliche Fragen zu AJAX.

Eine Sprache, um sie alle zu beherrschen

Als nächstes haben Sie die Leute, die keine andere Sprache oder ein anderes Framework kennen als die, die sie derzeit verwenden. Dies sind die Arten von Leuten, die Argumente machen, wie "Rails ist viel einfacher als PHP," und solche Sachen.

Kampf gegen PHP 4

Die dritte Form des Missverständnisses kommt von den Leuten, die im Laufe der Jahre nicht mit den Fortschritten von PHP Schritt gehalten haben. Stattdessen kämpfen sie immer noch gegen die Sprache, wie sie vor Jahren und Jahren existierte. Dies führt zu Aussagen wie: "PHP ist nicht objektorientiert" oder "PHP ist scheiße, weil es keinen Namensraum unterstützt." Du hast die Idee.

Skalierung

Schließlich haben wir die intelligenteren Entwickler, die glauben, dass "PHP nicht skalieren" oder "PHP hat keine Standards", was völlig falsch ist. Die Skalierung hat weniger mit der Sprache zu tun, als mit dem Server und der Struktur Ihrer App. Wie für Standards? Nun, es dauert nur eine schnelle Google-Suche nach PHP-FIG.

Was ist die PHP-FIG? "Die Idee hinter der Gruppe ist, dass Projektvertreter über die Gemeinsamkeiten zwischen unseren Projekten sprechen und Wege finden, wie wir zusammenarbeiten können. Unser Hauptpublikum ist das andere, aber wir sind uns sehr bewusst, dass der Rest der PHP-Community zuschaut. Wenn Andere wollen das übernehmen, was wir tun, sie sind herzlich eingeladen, aber das ist nicht das Ziel. "

Es ist eine bedauerliche Wahrheit, dass einige Argumente, die durch das Web gehen, entweder völlig falsch sind oder aktualisiert werden.


PHP ist nicht perfekt

In jeder Kritik steckt jedoch Wahrheit.

In jeder Kritik steckt jedoch Wahrheit. PHP ist nicht perfekt. Bei der Implementierung von Kernfunktionen und -funktionen ist PHP inkonsistent. Diese Argumente sind völlig gültig.

Diese Inkonsistenzen sind jedoch nicht ohne Grund. PHP begann als das, was wir heute als Templatiersprache bezeichnen würden. Seitdem hat es mehrere Paradigmenwechsel durchlaufen, die sich in eine funktionale Sprache wie C verwandelt haben und dann zu der vollen OOP-Sprache, die wir heute genießen. Auf dem Weg haben sich Best Practices herausgebildet und verschiedene Personen haben die Kontrolle über das, was hinzugefügt wurde, übernommen. Dies führt zu vielen verschiedenen Arten von Code in einer Sprache. Nun könntest du fragen "Warum lehnen Sie nicht einfach die schlechten Teile ab?"

Die Antwort auf diese Frage ist die gleiche wie bei der Erstellung von Websites für alte Versionen von Internet Explorer. Versteht mich nicht falsch; Ich würde es lieben, es einfach fallen zu lassen, aber gewaltige Änderungen wie diese können nicht ohne Zeitaufwand durchgeführt werden. Hoffentlich wird PHP im Laufe der Zeit immer mehr in OOP vorstoßen und seine Objekte zu konvertieren beginnen, um ihre Funktionen mit der Punktnotation zu verwenden, anstatt die zugegebenermaßen umständlich zu sein -> Syntax. Also statt array_push ($ arr, "Value");, du würdest etwas schreiben $ arr.push ("Value");.

Mach dir keine Sorgen; solche Dinge sind langsam passiert. Schauen Sie sich einfach die neuen Funktionen von PHP 5.5 an. Das alte funktionsorientierte MySQL-Add-On wurde zugunsten des neueren objektorientierten Ansatzes verworfen.


Das Geschenk

Jetzt mit der Vergangenheit, lasst uns in die Gegenwart gehen. Es gibt eine Handvoll wirklich cooler Projekte und Bewegungen, von denen einige Ideen aus anderen Sprachen leihen, um PHP auf die nächste Ebene zu bringen.

Betrachten wir folgendes:

  • Komponist
  • Laravel
  • Testgetriebene Entwicklung
  • PHP 5.4 / 5.5

Komponist

Dank PHP kann die PHP-Community das Rad jetzt immer wieder neu erfinden.

Inspiriert von Tools wie Bundler und NPM kann die PHP-Community dank Composer das Rad immer wieder neu erfinden. Node.js war die erste Sprache, in der ich mich mit Paketen wohl fühlte. Wenn Sie es schon einmal benutzt haben, wissen Sie was ich meine. Pakete werden lokal im Verzeichnis Ihres Projekts installiert, die Dokumentation der meisten Plugins ist leicht zu finden, und es ist relativ einfach, eigene Pakete einzureichen.

BIRNE?

PHP bot zwar seit Jahren eine Alternative an, PEAR, aber es war nicht besonders intuitiv oder einfach zu bedienen. Es fühlte sich sperrig an für etwas, das schließlich Klartextdateien holte. Außerdem wurden alle Pakete global installiert. Dies zwang Sie, die Benutzer mitzuteilen, welche Pakete Sie beim Verteilen Ihres Quellcodes verwendet haben. Wie Sie sich vorstellen können, führte dies zu falsch angepassten Versionen und anderen Dingen dieser Art.

Wenn Sie möchten, können Sie Ihre Komponenten auswählen.

Composer behebt all dies dank lokal gespeicherter Pakete und der Möglichkeit, pro-Projekt-Abhängigkeitsdateien zu erstellen. Das bedeutet, dass Sie Ihr Projekt problemlos mit dieser Abhängigkeitsdatei verteilen können, und andere Benutzer können ihre eigene Kopie von Composer verwenden, um alle angegebenen Abhängigkeiten automatisch herunterzuladen und gleichzeitig auf dem neuesten Stand zu halten.

Darüber hinaus ist Composer eine leichte Anwendung - in PHP selbst geschrieben - und verfügt über eine Autoloader-Funktion. Dies funktioniert nach dem oben genannten PSR-0-Standard, der Ihre Abhängigkeiten automatisch lädt, wenn Sie sie benötigen, sodass Ihre Anwendung so sauber wie möglich bleibt.

Alle diese Funktionen stellen eine deutliche Verbesserung dar. Ohne die Übernahme durch die Community bedeutet dies jedoch nichts. Ich freue mich, Ihnen mitteilen zu können, dass es sehr gut angenommen wurde. Große Projekte wie Symfony und Laravel haben ihre Komponenten bereits in die Composer-Bibliothek Packagist hochgeladen. Durch die Aufteilung des Frameworks in Komponenten können Sie ganz einfach Ihr eigenes benutzerdefiniertes Framework nach Ihren Wünschen erstellen. Mit anderen Worten, keine aufgeblähten Rahmen mehr. Wenn Sie möchten, können Sie Ihre Komponenten auswählen.

Benötigen Sie ein Beispiel? Sie können die Datenbankkomponente von Laravel nehmen und sie mit der Vorlagekomponente aus dem Symfony-Framework koppeln. Das Laravel-Framework selbst nutzt viele bewährte Symfony-Komponenten. Warum das Rad neu aufbauen, wenn Sie sich stattdessen auf andere Bereiche konzentrieren können?


Laravel

Auch wenn Sie Probleme mit einigen Inkonsistenzen von PHP haben, abstrahiert Laravel fast alles.

Nun wäre dies kein Artikel über die Zukunft von PHP, ohne Laravel ausführlicher zu diskutieren. Wir werden oft gefragt, warum Nettuts Laravel anscheinend so sehr vorantreibt, wie es gewesen ist. Das ist die falsche Frage. Fragen Sie stattdessen "Warum nicht?"

Auch wenn Sie Probleme mit einigen Inkonsistenzen von PHP haben, abstrahiert Laravel fast alles und gibt Ihnen das Gefühl und die Eleganz einer Sprache wie Ruby, jedoch mit der Leichtigkeit von PHP.

Laravel wird mit Eloquent geliefert, einem ORM, das alles rund um Datenbanken komplett umdenkt. Ich verwende meistens MySQL mit PHP. Was Sie von der Datenbank erhalten, ist ein Ressourcenobjekt, das Sie dann durch eine Funktion ausführen müssen, um die Ergebnisse zu erfassen. In Laravel wird alles als Standard-PHP zurückgegeben. Sie erhalten Objekte, die Sie ändern und speichern können. Sie können beispielsweise die Ergebnisse aus mehreren Tabellen kombinieren, um Datenbankaufrufe zu speichern (als Eager Loading bezeichnet), und auf lächerlich einfache Weise, wie Validierung und benutzerdefinierte Abfragen. Wenn Sie SQL nicht mögen, können Sie dies mit einem OOP-Stil und einfachen und lesbaren Methoden wie z finden und löschen.

Wir haben nur die Spitze des Eisbergs gesehen, mit dem, was Eloquent an den Tisch bringt, aber schon jetzt können Sie die Verbesserungen sehen. Laravel bringt diese Art von Innovation in fast jeden Bereich von PHP, einschließlich Templating, Routing, Migrationen, RESTful-Klassen und mehr. Das Beste ist jedoch, dass Taylor Otwell, der Erfinder von Laravel, mit jeder neuen Veröffentlichung weiterhin die Messlatte anhebt.

Wenn Sie mehr über Laravel erfahren möchten, empfehle ich den Tuts + Premium-Kurs Laravel Essentials, der von unserem eigenen Jeffrey Way unterrichtet wird. Ich sage das nicht als Teil des Nettuts + -Stabs, sondern als Person, die die Serie gesehen hat. Ich kann ehrlich sagen, dass ich null Wissen über Laravel hatte und Jeffrey hat so gut wie möglich gearbeitet.

Letztendlich geht es nicht wirklich um das Framework, sondern um die Community-Unterstützung. Solange ein Projekt unterstützt wird, wird es aktualisiert und bleibt relevant. Wenn Sie sich Sorgen machen, wie lange es beliebt bleiben wird, sichern Sie Ihre Chancen, indem Sie es aktiv nutzen!


PHP 5.4 / 5.5

Das nächste, was ich ansprechen möchte, ist die Aktualisierung von PHP, die 2012 veröffentlicht wurde. Mit der Version 5.4 wurde eine Fülle von hervorragenden neuen Funktionen bereitgestellt. Einen vollständigen Überblick über die Aktualisierungen finden Sie hier auf Nettuts +: 5.4-Artikel, 5.5-Artikel.

Aber für eine kurze Zusammenfassung meiner Favoriten:

Züge

  • Traits bieten die Möglichkeit, Class-Partials zu erstellen, mit denen Sie konsistente Objekte erstellen können, ohne alles neu zu schreiben.

Generatoren

  • Mit Generatoren können Sie einige coole Dinge mit Listen von Daten erledigen und von allen Funktionen der Lazy-Evaluation profitieren.

CLI-Webserver

  • Eine weitere großartige Ergänzung ist der integrierte Webserver, mit dem Sie Ihre Anwendungen mit verschiedenen PHP-Versionen testen können, ohne etwas wie Apache zu benötigen.

Dereferenzierung

  • Die Dereferenzierung ist keine wichtige Ergänzung, aber es ist schön, untergeordnete Elemente ohne die Verwendung von Funktionen referenzieren zu können. Dies umfasst beispielsweise den Zugriff auf einzelne Zeichen einer Konstante, indem nur die Notation in eckigen Klammern verwendet wird.

Die neue Kennwort-Hashing-API

  • Mit der neuen API haben Sie die Möglichkeit, sowohl Zeichenfolgen zu verschlüsseln als auch Kennwörter zu überprüfen und zu verstärken - alles ohne Kenntnis von bcrypt oder eines anderen Hash-Algorithmus.

Dies sind nur einige der neuen Verbesserungen, und es gibt eine ganze Liste von Dingen, die derzeit für die nächste Version diskutiert werden, die später in diesem Jahr erscheinen soll.


Testgetriebene Entwicklung

Lassen Sie uns zum Schluss noch ein wenig über das Testen Ihres Codes sprechen. Zugegebenermaßen etwas spät im Spiel, sah unsere Community im Jahr 2012 eine breite Akzeptanz der testgetriebenen Entwicklungsmethodik. Ich könnte einen Wachstumsanteil ausmachen, aber ich bin der Meinung, dass ein besserer Hinweis auf die Wahrheit darin besteht, sich einfach auf verschiedenen Entwicklerseiten und Foren umzusehen. Sie werden sicherlich eine Spitze sehen! Beim Testen in PHP ist PHPUnit der allgemein akzeptierte Standard.

Warum ist es wichtig??

Denken Sie an Ihr Projekt, bevor Sie eintauchen, wie ein Cowboy.

Oft haben Sie sich vorgenommen, Code zu schreiben, aber Sie verlieren etwas in der Übersetzung. Was ich damit meine ist, dass Sie eine Sache planen, aber bei der Implementierung verlieren Sie etwas an Integrität oder Funktionalität. Ein weiteres häufiges Problem tritt beim Schreiben von Code für große Projekte auf: Sie erhalten am Ende mehrere Klassen und Dateien, die jeweils eigene Abhängigkeiten haben. Was Sie übrig haben, ist eine "verflochtene Evolution" der Funktionalität, die sich als schwierig erweisen und verwalten lässt. Wie bei einem Jenga-Spiel können Sie durch Aktualisieren eines Teils ein anderes brechen und Ihre Anwendung verkrüppeln. Dies sind nur zwei Beispielprobleme, aber es gibt sicherlich andere.

Wie hilft TDD??

Nun, Sie schreiben klare Tests, bevor Sie einen Produktionscode schreiben. Das bedeutet, wenn Sie Ihren eigentlichen Code schreiben müssen, muss er Ihrem ursprünglichen Plan entsprechen. Nicht nur das, aber in der Folge werden alle Abhängigkeiten in Ihren Tests verfolgt. Wenn Sie ein wenig Code aktualisieren und versehentlich einen der Tests brechen, werden Sie sofort benachrichtigt.

Ja, das Einrichten dieser Tests erfordert einen zusätzlichen Schritt, aber Sie müssen darüber nachdenken, bevor Sie sprechen. Hat jemand die Vorteile davon? Natürlich nicht. Das gleiche gilt für Tests: Denken Sie an Ihr Projekt, bevor Sie eintauchen, wie ein Cowboy.

Zusätzliches Lernen
  • Testgetriebenes PHP (Premium)
  • TDD in PHP

Fazit

Es ist eine aufregende Zeit, PHP-Entwickler zu sein. Viele der inhärenten Probleme haben oder werden behoben. Was die anderen Probleme angeht, werden wir diese mit einem guten Rahmen und Tests leicht beheben können.

Also was denkst du? Steigst du an Bord? Stimme mir nicht zu Wenn ja, fahren wir mit der folgenden Diskussion fort!