Heim > Artikel > Backend-Entwicklung > Was Sie jetzt wissen sollten, wenn Sie PHP schreiben
Zuallererst sollten Sie PHP 5.3 oder höher verwenden. Wenn die PHP-Version niedriger ist, ist es Zeit für ein Upgrade. Ich empfehle, wenn möglich die neueste Version zu verwenden.
Sie sollten PHP The Right Way gelesen haben. Dieser Artikel enthält viel Inhalt und kann erweitert werden. Sie müssen die meisten Begriffe und Konzepte kennen.
1. PSR
Die Idee hinter der Gruppe ist, dass Projektvertreter über die Gemeinsamkeiten zwischen unseren Projekten sprechen und Wege finden, wie wir zusammenarbeiten können.
Ich habe PSR (PHP Standard Recommendation) in früheren Artikeln und bei der Interaktion mit Kollegen oft erwähnt. Viele Leute denken, dass PSR nur unbedeutende Dinge tut, wie zum Beispiel die Standardisierung des Codierungsstils, aber in Wirklichkeit ist es viel mehr.
Die PSR-Reihe von Standarddokumenten wird von php-fig (PHP Framework Interop Group) entworfen und abgestimmt. Zu den stimmberechtigten Mitgliedern gehören Autoren einiger Mainstream-Frameworks und Erweiterungen, darunter Laravel, Symfony, Yii usw.
Laut der offiziellen Website besteht der Zweck dieser Organisation nicht darin, Ihnen zu sagen, was Sie tun sollen, sondern darin, einige gängige Rahmenwerke auszuhandeln und miteinander zu vereinbaren. Aber ich glaube, dass es unter diesen Frameworks und Erweiterungen immer etwas geben wird, das Sie verwenden werden.
PSR hat derzeit 6 Dokumente genehmigt:
0: Automatisches Laden (hauptsächlich für Versionen vor PHP 5.3 ohne Namespace)
1: Codierungsspezifikationen
2 : Empfehlungen zum Codierungsstil
3: Ergebnisse protokollieren
4: Automatisches Laden ist detaillierter (es gibt eine große Änderung, nachdem der Namespace angezeigt wird)
7 : HTTP-Nachrichtenschnittstelle
Derzeit im Entwurf gibt es PSR-5 (PHPDoc Standard), PSR-6 (Cache) usw. Die Punkte 5 und 6 sind nicht in der obigen Liste enthalten, da über sie noch nicht abgestimmt wurde.
Ich glaube, dass Sie im Zuge der fortlaufenden Aktualisierung der Standards feststellen werden, dass das Studium dieser Konventionen auch für Sie von großem Nutzen ist, auch wenn Sie sich möglicherweise nicht unbedingt an alles halten.
Niemand in der Gruppe möchte Ihnen als Programmierer sagen, wie Sie Ihre Anwendung erstellen sollen.
2. Composer
Composer ist ein Werkzeug Für die Abhängigkeitsverwaltung in PHP können Sie die Bibliotheken deklarieren, von denen Ihr Projekt abhängt, und diese für Sie verwalten (installieren/aktualisieren).
Composer unterscheidet sich von Pear und Pecl. Es wird nicht nur für verwendet Durch die Installation von Erweiterungen wird, was noch wichtiger ist, eine Methode zum Implementieren und Verwalten von Erweiterungen in einem modernen PHP-Framework definiert. Ähnlich wie npm von node.js und pip von Python, bietet jedoch mehr als das oben Genannte. Der Kern von Composer besteht darin, die Standardinstallation von Erweiterungen und das automatische Laden von Klassen zu implementieren. Über die Plattform packagist.org können unzählige Erweiterungskomponenten einfach eingeführt werden. Derzeit können die bekannteren PHP-Erweiterungen über Composer installiert werden. Der Aufruf muss lediglich eine autoload.php-Datei laden. Composer registriert eine automatische Lademethode über die Methode spl_autoload_register, um Erweiterungsklassen und Dateien zu laden. Natürlich hat Composer während dieses Prozesses auch eine Optimierung vorgenommen. Wir alle wissen, dass PHP Dateien über include und require importiert, was eigentlich nicht schön zu schreiben ist. PHP 5.3 bietet Namespaces, die nichts mit dem Dateiimport zu tun haben. Composer implementiert jedoch PSR-4 (PSR-0 in älteren PHP-Versionen). Bei Verwendung lädt die durch den Aufruf von spl_autoload_register implementierte Methode die erforderlichen Klassen, wenn sie aufgerufen wird. Die Schreibmethode ähnelt Pythons Import, was sowohl schön als auch funktional ist . Es geht um die Rolle des On-Demand-Ladens und des verzögerten Ladens.
3. php-cs-fixer
Das PHP Coding Standards Fixer Tool behebt die meisten Probleme in Ihrem Code, wenn Sie den PHP-Codierungsstandards folgen möchten, wie in der PSR-1- und PSR-2-Dokumente.
Die Funktion dieses Tools besteht darin, Ihren Code gemäß den PSR-1- und PSR-2-Spezifikationen zu formatieren, und einige optionale Codierungsstile sind Symfony-Spezifikationen.
Das ist eigentlich nicht der Rede wert, aber ich habe kürzlich .php_cs-Dateien in mehreren Open-Source-Frameworks gesehen. Ich war neugierig und habe nach weiteren Recherchen von diesem Projekt erfahren. Manche Leute denken vielleicht, dass es keinen Grund gibt, sich über den Codierungsstil Gedanken zu machen. Ich kann Ihnen die Vorteile nicht nennen. Wenn Sie glauben, dass Programmieren mehr als nur ein Job ist, dann ist es so, als würde sich das Aufräumen Ihres Zimmers nicht auf Ihr Essen und Schlafen auswirken, aber ein sauberes Zimmer wird komfortabler aussehen. Wenn Sie mit anderen zusammenarbeiten möchten, ist diese Angelegenheit umso wichtiger.
4. PsySH
Eine Laufzeit-Entwicklerkonsole, interaktiver Debugger und REPL für PHP.
PsySH ist eine interaktive Laufzeit für PHP, ähnlich wie Pythons IDLE Umfeld. Ich habe dies in Laravel entdeckt und die Funktion des Kunsthandwerkers in Laravel 5 wird dadurch umgesetzt. Laravel 4 verwendet ein anderes Projekt: boris.
Dies ist vor allem beim Testen einiger einfacher Funktionen und Features von PHP nützlich. Wenn Sie auf unsichere Dinge stoßen, z. B. die Verwendung von empty, können Sie damit einige Tests durchführen.
Einige Frameworks und Komponenten
Framework
Ich bevorzuge Laravel. Derzeit verwendet das Unternehmen Yii2. Ich mache mir Sorgen um Symfony und Phalcon (implementiert in C-Sprache). Was Sie verwenden und was nicht, hängt hauptsächlich von Ihren Vorlieben ab, und manchmal können Sie nicht anders, als Ihre eigene Wahl zu treffen, aber es ist keine schlechte Idee, etwas zu recherchieren und mehr darüber zu erfahren.
Wenn man Laravel erwähnt, denken viele sofort an Ruby on Rails. Ich denke, das Nachahmen oder Plagiieren ist nicht der Hauptzweck. Der Hauptzweck besteht darin, Entwicklern ein besseres Tool zur Verfügung zu stellen. Glücklicherweise verfügt Laravel über eine andere Routing-Steuerung (ohne Action-Suffix oder -Präfix), ein nützliches ORM (Eloquent), eine nützliche Template-Engine (Blade) oder ein relativ gut aussehendes Dokument (wenn die Community es sieht) usw.
Powerful wird manchmal als riesig kritisiert, aber das liegt daran, dass Sie die mittel- und langfristige Planung Ihres Projekts, die aktuelle Größe des Projekts sowie die zukünftige Größe und Tragfähigkeit verstehen müssen.
Die Kernimplementierung von Larval ist ein Container (Container) und die Reflexionsklasse von PHP (ReflectionClass) (dasselbe gilt für Yii 2). Um dies zu verstehen, können Sie beim Lesen weiterer Artikel und Dokumente auch einen Blick auf den Quellcode werfen.
Symfony 2 bietet viele Komponenten. http-kernel und http-foundation werden ebenfalls geerbt und direkt in Laravel verwendet. Es lohnt sich zu wissen und zu lernen.
CodeIgniter ist ein kleines, aber leistungsstarkes Framework. Obwohl CI nicht mit Composer-Komponenten entwickelt wird, bieten Versionen nach 3.0 auch Composer-Unterstützung (dies ist nichts anderes als das Hinzufügen eines zusätzlichen Anbieterverzeichnisses und die Einführung von autoload.php-Dateien).
ORM
ORM oder Active Record wird meiner Meinung nach noch benötigt. Manche Leute denken vielleicht, dass PHP nur eine Template-Engine ist und SQL von Hand geschrieben werden sollte. Lassen Sie sich von diesen Worten nicht stören.
Die Implementierung von Active Record in CodeIgniter ist sehr leichtgewichtig, aber für die Größe von CI selbst bereits sehr nützlich.
Eloquent, umgesetzt von Laravel, gefällt mir sehr gut und es lässt sich auch in andere Projekte integrieren. Symfony 2 verwendet Doctrine, und dieses Projekt verdient ebenfalls Aufmerksamkeit. Yii 2 verfügt auch über eigene Implementierungsmethoden.
Template-Engine
Die Template-Engine muss drei Dinge tun:
1. Ausgabe (Echo) von Variablenwerten,
2. Bedingte Beurteilung und Schleife (if ... else, for, foreach, while)
3. Eingeführt oder von anderen Dateien geerbt
Das von Laravel implementierte Blade ist relativ leichtgewichtig und einfach -zu verwendende Template-Engine. Allerdings ist die Einführung in andere Frameworks derzeit nicht ganz einfach. Als ich frei war, habe ich versucht, es in Yii 2 einzuführen. Jetzt ist es nur noch eine einfache Implementierung. Ich hoffe, den Parsing-Teil von Blade separat zu extrahieren und später eine einfache Implementierung zu erstellen. Eine Suche auf Github ergab, dass jemand dasselbe tat.
Yii 2 scheint eher dazu geeignet zu sein, in nativem PHP geschrieben zu werden, bietet aber auch Erweiterungen, die Smarty und Twig unterstützen. Symfony 2 verwendet Twig. Twig und Symfony sowie der oben erwähnte PHP-CS-Fixer sind allesamt Werke von SensioLabs.
Smarty ist eine alte und hartnäckige Template-Engine. Um ehrlich zu sein, gefällt es mir nicht besonders. Die Syntax ist zu kompliziert und Dinge wie die Variablenzuweisung haben ihre eigenen Methoden. Die aktuelle Version verwendet Lexer zum Parsen von Dateien, was sich wie eine andere in PHP implementierte Sprache anfühlt. Es gibt auch einige zu lange reguläre Ausdrücke und zu komplexe Implementierungen im Projekt. Ich denke, das ist eine sehr gefährliche und fehleranfällige Sache.