Modernes PHP ohne Frameworks. Welches PHP-Framework zum Lernen auswählen? Auswahl eines PHP-Frameworks


Ich werde meine Gedanken teilen und meinen Senf dazu geben. Der Artikel enthält nicht viele Zahlen oder Grafiken (alle Arten von Google Trends), sondern nur persönliche Beobachtungen.

Mit der Veröffentlichung der neuesten PHP-Versionen und dem Erscheinen neuer Versionen beliebter PHP-Frameworks (Zend Framework 2, Yii2 (Alpha) usw.) wächst das Interesse an der PHP-Sprache. Übrigens ist die Sprache im Moment sehr beliebt. Meist unter unerfahrenen Webentwicklern (derzeit wird es von mehr als 80 % aller Websites verwendet) und unter Ressourcen mit durchschnittlichem Traffic.

Es gibt natürlich Beispiele für erstklassige Websites, die PHP verwenden:

Kommen wir zurück zur Frage der PHP-Frameworks und der Wahl, welche davon jetzt beliebt, gefragt und studiert werden sollten. Wenn wir über den westlichen Markt sprechen, dann sind dort die unangefochtenen Marktführer in Bezug auf Nachfrage und Nennungshäufigkeit: Zend Framework, CodeIgniter und das schnell an Popularität gewinnende Yii. Auf den weltgrößten Freelancer-Börsen oDesk und Elance werden neben diesem Trio häufig auch CakePHP und Symfony genannt.

In den Weiten des postsowjetischen Raums sind in absteigender Reihenfolge beliebt:

  • Zend-Framework
  • CodeInginter
  • Symphonie
  • Kohana
  • KuchenPHP

Zusammenfassend sind die beliebtesten PHP-Frameworks der Welt nach den Vorlieben von Programmierern und den Anforderungen von Arbeitgebern Zend-Framework, CodeIgniter und Yii. Letzteres gewinnt schnell an Popularität. Auch unter freiberuflichen Entwicklern sind Symfony und CakePHP weit verbreitet.

Trotz der zunehmenden Popularität anderer Skriptsprachen (wie Python und Ruby) entscheiden sich große Unternehmen immer noch hauptsächlich für PHP. Und bei der Auswahl einer Plattform orientieren sie sich an Kriterien wie Skalierbarkeit, Popularität des Frameworks und der Verfügbarkeit von Spezialisten für diese Plattform auf dem Markt. Im Bereich HiLoad hinkt PHP etwas hinterher und scheint an seine Grenzen gestoßen zu sein. Aber es gibt darauf basierende kompilierte Lösungen wie kPHP, HipHop usw.

Was studieren und worauf konzentrieren?

Wenn Sie über Grundkenntnisse in PHP verfügen, sich in diese Richtung weiterentwickeln möchten und Ihre Fähigkeiten für den Arbeitgeber nutzbar machen möchten, sollten Sie sich zunächst einmal die Top-3-Frameworks genauer ansehen: Zend, CodeIgniter, Yii. Als nächstes sollten Sie entscheiden, welches für Sie „niedlicher“ und leichter zu erlernen ist. Und testen Sie sie schließlich.

Meine persönliche Einstellung zu Frameworks ist wie folgt:

- Zend Framework - beliebt, aber monströs, es gibt Leistungsprobleme. Mit der Kenntnis dieser Rahmenbedingungen finden Sie problemlos einen Job, eine andere Frage ist, ob Ihnen der „einfache Einstieg“ gelingen wird. Was mich betrifft, ist es schwer zu lernen und Sie sollten meiner Meinung nach nicht damit beginnen.

- CodeIgniter - einfach und schnell. Aber es ist in Bezug auf die Funktionalität von seinen Konkurrenten sehr hinterher. Es ist sehr gut, damit anzufangen, sich mit MVC und anderen Tricks auseinanderzusetzen. Aber mit der Zeit werden Sie die Funktionalität out of the box vermissen.

- Yii ist etwas dazwischen. Etwas weniger produktiv als CodeIgniter, aber es enthält viel mehr Funktionalität. Es hat eine gute Dokumentation und ist im Allgemeinen viel freundlicher als Zend.

- Die restlichen oben genannten Frameworks verdienen ebenfalls Aufmerksamkeit, aber ich hatte keinen persönlichen Kontakt mit ihnen und werde daher das Wasser nicht trüben.

Ich begann mit dem Erlernen von CodeIgniter und liebte es. Dann begann ich die Funktionalität zu vermissen und suchte nach einer Alternative. Im Moment studiere und verwende ich Yii in meiner Arbeit. Falls Frage welches PHP-Framework zum Lernen ausgewählt werden soll einen Vorteil zu setzen - dann wäre ich noch geneigt, Yii 1.1 zu studieren. Und lassen Sie sich nicht von der aktiven Arbeit am abwärtsinkompatiblen Yii2 stören, es ist ein langer Weg, bis es in Produktion geht.

Ich hoffe, ich war hilfreich für Sie.

  • Übersetzung
  • Lernprogramm

Ich habe eine schwierige Aufgabe für Sie. Versuchen Sie beim nächsten Start eines neuen Projekts, auf ein PHP-Framework zu verzichten. Ich werde die Fehler von Frameworks nicht auflisten, und dies ist keine Manifestation des Entfremdungssyndroms: In diesem Handbuch werden wir Pakete verwenden, die von den Entwicklern mehrerer Frameworks geschrieben wurden. Ich habe absoluten Respekt vor Innovationen in diesem Bereich.


Aber dieser Artikel handelt nicht von ihnen. Sie handelt von dir. Über die Möglichkeit, ein besserer Entwickler zu werden.


Vielleicht besteht der Hauptvorteil des Verlassens des Frameworks darin, zu wissen, wie alles unter der Haube funktioniert. Sie werden sehen, was vor sich geht, ohne sich auf ein Framework verlassen zu müssen, das sich so sehr um Sie kümmert, dass Sie es nicht debuggen oder vollständig verstehen können.


Vielleicht lässt Sie Ihr nächster Job keinen Spaß daran, ein neues Projekt ohne Framework zu starten. Viele wichtige, geschäftskritische PHP-Aufgaben beinhalten die Verwendung vorhandener Anwendungen. Dabei spielt es keine Rolle, ob es sich um eine Anwendung handelt, die auf einem modernen Framework wie Laravel oder Symfony, auf einer der alten Plattformen wie CodeIgniter oder FuelPHP aufgebaut ist – oder ob es sich um eine deprimierend weit verbreitete Legacy-PHP-Anwendung mit einer „include-orientierten Architektur“ handelt: Wenn Sie jetzt sich entwickeln ohne Rahmen, auf den Sie besser vorbereitet sind beliebig für ein zukünftiges PHP-Projekt.


Früher versuchten sie, ohne Frameworks zu erstellen, weil einige Systeme müssen HTTP-Anforderungen interpretieren und weiterleiten, HTTP-Antworten senden und Abhängigkeiten verwalten. Der Mangel an Standards bedeutete das zumindest zwangsläufig diese Die Komponenten der Frameworks waren eng miteinander verbunden. Wenn Sie also mit der Entwicklung eines Projekts ohne Framework begonnen haben, haben Sie schließlich Ihr eigenes Framework erstellt.


Aber dank der Bemühungen von PHP-FIG um automatisches Laden und Cross-Kompatibilität können Sie heute ohne ein Framework entwickeln, ohne nebenbei eines zu erstellen. Es gibt viele großartige, miteinander kompatible Pakete, die von zahlreichen Entwicklern geschrieben wurden. Und das Zusammenfügen in einem einzigen System ist viel einfacher als Sie denken!

Wie funktioniert PHP?

Zunächst einmal ist es wichtig zu verstehen, wie PHP-Anwendungen mit der Außenwelt interagieren.


PHP führt Serveranwendungen in einem Request/Response-Zyklus aus. Alle Interaktionen mit der Anwendung – über den Browser, die Befehlszeile oder die REST-API – kommen als Anfragen zu ihr. Wenn eine Anfrage empfangen wird, lädt die Anwendung, verarbeitet die Anfrage und generiert eine Antwort, die an den Client zurückgesendet wird, und die Anwendung wird geschlossen. Und so passiert es, wenn alle Verkehr.

Anforderungscontroller

Mit diesem Wissen bewaffnet, beginnen wir mit dem Front-Controller. Es ist eine PHP-Datei, die alle Anfragen an Ihre Anwendung verarbeitet. Das heißt, es ist die erste PHP-Datei, auf die die Anfrage trifft, und (tatsächlich) die letzte PHP-Datei, die die Antwort der Anwendung durchläuft.


Nehmen wir das klassische Beispiel mit Hallo Welt!, das vom integrierten Webserver von PHP bereitgestellt wird, um zu überprüfen, ob alles richtig eingerichtet ist. Falls noch nicht geschehen, stellen Sie sicher, dass in Ihrer Umgebung PHP 7.1 oder höher installiert ist.


Lassen Sie uns ein Projektverzeichnis erstellen, ein öffentliches verschachteltes Verzeichnis darin erstellen und darin eine index.php-Datei mit dem folgenden Code:


Beachten Sie, dass wir hier strenge Typisierung deklarieren – dies sollte am Anfang jeder PHP-Datei in Ihrer Anwendung erfolgen – da Type Hinting wichtig für das Debugging und ein klares Verständnis für diejenigen ist, die nach Ihnen codieren.



php -S localhost:8080 -t öffentlich/

Öffnen wir nun die Adresse http://localhost:8080/ im Browser. Angezeigt Hallo Welt! ohne Fehler?


Bußgeld. Kommen wir zum nächsten Schritt!

Autoload und Pakete von Drittanbietern

Als Sie anfingen, mit PHP zu arbeiten, haben Sie wahrscheinlich include- oder require-Anweisungen verwendet, um Funktionen oder Konfigurationen aus anderen PHP-Dateien abzurufen. Im Allgemeinen wird dies am besten vermieden, da es für andere Personen später viel schwieriger sein wird, den Code zu verstehen und zu verstehen, wo die Abhängigkeiten liegen. Dies macht das Debuggen zu Albtraum.


Beenden - automatisch laden. Wenn Ihre Anwendung also eine Klasse verwenden muss, weiß PHP, wo sie zu finden ist, und lädt sie automatisch zum Zeitpunkt des Aufrufs. Diese Funktion gibt es seit PHP 5, kam aber erst mit dem Aufkommen von PSR-0 zum Einsatz (dem Autoloading-Standard, der jetzt von PSR-4 abgelöst wird).


Wir könnten uns die Mühe machen, unseren eigenen Autoloader zu schreiben, aber da wir uns für Composer entschieden haben, um Abhängigkeiten von Drittanbietern zu verwalten, und es bereits einen sehr praktischen Autoloader hat, werden wir diesen verwenden.

Middleware

Wenn Sie sich eine Anwendung wie eine Zwiebel vorstellen, bei der Anfragen von außen in die Mitte gehen und Antworten in die entgegengesetzte Richtung gehen, dann ist Middleware jede Schicht der Zwiebel, die Anfragen entgegennimmt, wahrscheinlich etwas mit den Antworten macht und sie an die weiterleitet unteren Schicht oder generiert eine Antwort und sendet an die oberste Schicht. Dies geschieht, wenn die mittlere Schicht Anforderungen auf bestimmte Bedingungen prüft, z. B. die Anforderung eines nicht vorhandenen Pfads.


Wenn die Anfrage bis zum Ende durchgeht, wird die Anwendung sie verarbeiten und in eine Antwort umwandeln. Danach erhält jede Zwischenschicht in umgekehrter Reihenfolge eine Antwort, modifiziert sie gegebenenfalls und gibt sie an die nächste Schicht weiter.


Möglichkeiten zur Verwendung von Zwischenlagen:

  • Debuggen von Entwicklungsproblemen.
  • Schrittweise Ausnahmebehandlung in der Produktion.
  • Begrenzung der Häufigkeit eingehender Anfragen.
  • Antworten auf Anfragen für nicht unterstützte Medientypen.
  • CORS-Handhabung.
  • Weiterleiten von Anforderungen an die entsprechenden Verarbeitungsklassen.

Middleware ist die einzige Möglichkeit, Tools zu implementieren, um all diese Situationen zu bewältigen? Keineswegs. Aber Middleware-Implementierungen machen den Anforderungs-/Antwortzyklus viel klarer, was das Debuggen erheblich vereinfacht und die Entwicklung beschleunigt.


Wir werden die mittlere Schicht für das letzte Szenario verwenden: Routing.

Routing

Der Router verwendet die Informationen aus der Anfrage, um herauszufinden, welche Klasse damit umgehen soll (z. B. sollte der URI /products/purple-dress/medium mit der Klasse ProductDetails::class mit Purple-dress und medium als Argumenten behandelt werden). .


Unsere Anwendung verwendet den beliebten FastRoute-Router über eine PSR-15-konforme Middleware-Implementierung.

Middleware-Dispatcher

Damit unsere Anwendung mit einer Art Zwischenschicht funktioniert, brauchen wir einen Dispatcher.



Komponist benötigt Relais/Relais: [E-Mail geschützt]

Und da die PSR-15-Spezifikation erfordert, dass die Middleware-Implementierung PSR-7-konforme HTTP-Nachrichten weiterleitet, verwenden wir Zend Diactoros .


Composer benötigen zendframework/zend-diactoros

Lassen Sie uns Relay darauf vorbereiten, Zwischenschichten zu empfangen.


// ... DI\ContainerBuilder verwenden; verwenden Sie BeispielApp\HelloWorld; Verwenden Sie Relais\Relais; benutze Zend\Diactoros\ServerRequestFactory; Verwenden Sie die Funktion DI\create; // ... $container = $containerBuilder->build(); $middlewareQueue = ; $requestHandler = new Relay($middlewareQueue); $requestHandler->

In Zeile 16 verwenden wir ServerRequestFactory::fromGlobals() , um alle Informationen zu sammeln, die zum Erstellen einer neuen Anfrage erforderlich sind, und übergeben sie an das Relay . Hier trifft die Anfrage auf den Stack der mittleren Schicht.


Jetzt fügen wir eine FastRoute und einen Anforderungshandler hinzu (FastRoute bestimmt, ob die Anforderung gültig ist und von unserer Anwendung verarbeitet werden kann, und der Anforderungshandler übergibt die Anforderung an den Handler, der für diese Route konfiguriert ist).


Composer erfordern Middleware/Fast-Route-Middleware/Request-Handler

Lassen Sie uns nun eine Route für die Handler-Klasse definieren Hallo Welt!.. Wir verwenden hier die /hello-Route, um die Möglichkeit zu demonstrieren, eine andere Route als den Basis-URI zu verwenden.


// ... DI\ContainerBuilder verwenden; verwenden Sie BeispielApp\HelloWorld; verwenden Sie FastRoute\RouteCollector; Verwenden Sie Middleware\FastRoute; Verwenden Sie Middlewares\RequestHandler; Verwenden Sie Relais\Relais; benutze Zend\Diactoros\ServerRequestFactory; Verwenden Sie die Funktion DI\create; Verwenden Sie die Funktion FastRoute\simpleDispatcher; // ... $container = $containerBuilder->build(); $routes = simpleDispatcher(function (RouteCollector $r) ( $r->get("/hello", HelloWorld::class); )); $middlewareQueue = new FastRoute($routes); $middlewareQueue = neuer RequestHandler(); $requestHandler = new Relay($middlewareQueue); $requestHandler->handle(ServerRequestFactory::fromGlobals());

Damit es funktioniert, müssen wir HelloWorld aktualisieren, um es zu einer aufrufbaren Klasse zu machen, damit diese Klasse als Funktion aufgerufen werden kann.


// ... Klasse HelloWorld ( public function __invoke(): void ( echo "Hallo, automatisch geladene Welt!"; exit; ) )

Beachten Sie den hinzugefügten Ausgang; in der magischen Methode __invoke(). Sie werden bald verstehen, wofür es ist.



// ... verwende Zend\Diactoros\ServerRequestFactory; Verwenden Sie die Funktion DI\create; Verwenden Sie die Funktion DI\get; Verwenden Sie die Funktion FastRoute\simpleDispatcher; // ... $containerBuilder->addDefinitions([ HelloWorld::class => create(HelloWorld::class) ->constructor(get("Foo")), "Foo" => "bar" ]); $container = $containerBuilder->build(); // ... $middlewareQueue = new FastRoute($routes); $middlewareQueue = neuer RequestHandler($container); $requestHandler = new Relay($middlewareQueue); $requestHandler->handle(ServerRequestFactory::fromGlobals());

Voila! Wenn Sie Ihren Browser neu laden, sollten Sie sehen Hallo Barwelt!.

Korrekte Antworten senden

Erinnern Sie sich, dass ich die Exit-Anweisung in HelloWorld erwähnt habe?


Dies ist ein einfacher Weg, um sicherzustellen, dass wir eine einfache Antwort erhalten, aber es ist immer noch nicht der beste Weg, um die Ausgabe an den Browser zu senden. Dieser grobe Ansatz macht HelloWorld die zusätzliche Arbeit der Berichterstellung - die von einer anderen Klasse erledigt werden sollte -, was das Senden von Headern und Statuscodes zu schwierig macht und auch dazu führt, dass die Anwendung geschlossen wird, ohne dass ausgeführte Middleware die Möglichkeit hat, ausgeführt zu werden. nach Hallo Welt.



Aktualisieren Sie HelloWorld, um eine Antwort zurückzugeben.


// ... Namensraum ExampleApp; Verwenden Sie Psr\Http\Message\ResponseInterface; Klasse HelloWorld ( private $foo; private $response; öffentliche Funktion __construct(string $foo, ResponseInterface $response) ( $this->foo = $foo; $this->response = $response; ) öffentliche Funktion __invoke(): ResponseInterface ( $response = $this->response->withHeader("Content-Type", "text/html"); $response->getBody() ->write(" Hallo, ($this->foo) Welt!"); return $response; ) )

Aktualisieren wir die Containerdefinition, sodass HelloWorld ein neues Response-Objekt erhält.


// ... Middlewares\RequestHandler verwenden; Verwenden Sie Relais\Relais; benutze Zend\Diactoros\Response; benutze Zend\Diactoros\ServerRequestFactory; Verwenden Sie die Funktion DI\create; // ... $containerBuilder->addDefinitions([ HelloWorld::class => create(HelloWorld::class) ->constructor(get("Foo"), get("Response")), "Foo" => " bar", "Response" => function() (return new Response(); ), ]); $container = $containerBuilder->build(); // ...

Wenn wir die Seite jetzt aktualisieren, erhalten wir einen leeren Bildschirm. Die Anwendung gibt das richtige Response-Objekt vom Middleware-Manager zurück, und dann ... was?


Es macht einfach nichts damit.


Wir brauchen noch ein Werkzeug: einen Emitter. Es befindet sich zwischen der Anwendung und dem Webserver (Apache, nginx usw.) und sendet Ihre Antwort an den Client, der die Anfrage generiert hat. Der Emitter nimmt einfach das Response-Objekt und wandelt es in Anweisungen um, die die Server-API verstehen kann.


Gute Neuigkeiten! Das Zend-Diactoros-Paket, das wir bereits zum Verwalten von Anfragen verwenden, enthält einen PSR-7-Antwort-Emitter.


Um das Beispiel einfach zu halten, verwenden wir hier einen sehr einfachen Emitter. Es kann zwar viel komplexer sein, aber bei großen Downloads muss die eigentliche Anwendung so konfiguriert werden, dass sie den Stream-Emitter automatisch verwendet. Es ist im Zend-Blog gut dokumentiert.


Lassen Sie uns public/index.php aktualisieren, um die Antwort vom Dispatcher zu erhalten und an den Emitter weiterzuleiten.


// ... Relais\Relais verwenden; benutze Zend\Diactoros\Response; benutze Zend\Diactoros\Response\SapiEmitter; benutze Zend\Diactoros\ServerRequestFactory; Verwenden Sie die Funktion DI\create; // ... $requestHandler = new Relay($middlewareQueue); $response = $requestHandler->handle(ServerRequestFactory::fromGlobals()); $Emitter = neuer SapiEmitter(); return $emitter->emit($response);

Seite neu laden - wir sind wieder im Geschäft! Es ist Zeit für eine robustere Antwortverarbeitung.


In Zeile 15 endet der Request/Response-Zyklus und der Webserver nimmt seinen Betrieb auf.

Fertigstellung

Mit 44 Codezeilen und einigen weit verbreiteten, rigoros getesteten, robusten, interoperablen Komponenten haben wir das Bootstrap-Programm einer modernen PHP-Anwendung implementiert. Es ist mit den Standards PSR-4 , PSR-7 , PSR-11 und PSR-15 kompatibel, sodass Ihnen eine breite Palette von HTTP-Nachrichtenimplementierungen, DI-Containern, Middleware und Dispatchern zur Verfügung steht.


Wir haben uns ein wenig mit der Technologie und Argumentation beschäftigt, aber ich hoffe, Sie können die Einfachheit des Bootstrap-Programms für eine neue Anwendung ohne den begleitenden Framework-Müll erkennen. Ich hoffe auch, dass Sie jetzt besser darauf vorbereitet sind, diese Technologien auf bestehende Anwendungen anzuwenden.

Tags: Tags hinzufügen

Heute sehen Sie eine Liste von PHP-Frameworks mit all ihren Vor- und Nachteilen. Ich hoffe wirklich, dass diese Liste für Sie hilfreich ist. Na dann, los geht's!

Laravel


Erforderliche PHP-Version - 7

Laravel ist ein umfassendes Framework, das für die schnelle Anwendungsentwicklung mithilfe der MVC-Architektur entwickelt wurde. Es ist bei weitem das am häufigsten verwendete aller PHP-Frameworks und hat eine große Fangemeinde unter Entwicklern.

Vorteile:

  • Verfügbarkeit der MVC-Architektur (einschließlich für PHP 7)
  • Komponententests (FAST für HHVM)
  • Hohes Abstraktionsniveau
  • Möglichkeiten zur Vermeidung von Überlastungen mit dynamischen Methoden
  • Riesige Menge an integrierten Funktionen
  • Möglichkeit, Zahlungen in das Stripe-System zu integrieren
  • Zuverlässiges Datenverschlüsselungssystem

Phalkon


Die erforderliche PHP-Version ist 5.3

Phalcon ist ein MVC-basiertes Framework für PHP. Im Gegensatz zu anderen Frameworks benötigt Phalcon relativ wenig Ressourcen, um zu funktionieren, was zu einer sehr schnellen Verarbeitung von HTTP-Anfragen führt. Dieses Feature kann für einige Entwickler entscheidend sein, die mit Systemen arbeiten, über die sich im Voraus nur schwer etwas sagen lässt.

Phalcon bietet Entwicklern Tools zum Speichern von Daten, wie z. B. einen nativen SQL-Dialekt: PHQL, sowie Object Document Mapping für MongoDB. Zu den weiteren Funktionen dieses Frameworks gehören auch: Templating-Engines, Formularersteller, einfache Anwendungsentwicklung, Bereitstellung internationaler Sprachunterstützung usw. Phalcon ist ideal, um sowohl verschiedene REST-APIs zu erstellen als auch vollwertige Webanwendungen zu entwickeln.

Vorteile:

  • Hohe Geschwindigkeit und geringe Überlastung
  • Einzigartigkeit - Dieses Framework wurde als Erweiterung der Programmiersprache C erstellt.
  • Sehr guter integrierter Schutz
  • Riesige Menge an Dokumentation
  • Entwicklerorientiert

Mängel:

  • Funktioniert nicht mit HHVM

Symphonie


Die erforderliche PHP-Version ist 5.5.9

Symfony ist das beliebteste Framework für die Entwicklung von Websites und Webanwendungen. Symfony-Komponenten sind eine Sammlung unabhängiger, wiederverwendbarer Komponenten, die zum Erstellen von Anwendungen wie Drupal, phpBB und eZ Publish verwendet wurden.

Vorteile:

  • Hohe Performance dank Bytecode-Caching
  • Zuverlässigkeit
  • Gute Dokumentation, Wartbarkeit
  • Gute Unterstützung; voll ausgebildeter Rahmen

Mängel:

  • Trotz guter Dokumentation ist dieses Framework ziemlich schwer zu beherrschen.

CodeIgniter

Erforderliche PHP-Version - 5.4

CodeIgniter ist ein leistungsstarkes PHP-Framework, das sehr wenig Speicher benötigt. Es wurde für Entwickler entwickelt, die ein einfaches und elegantes Entwicklungskit benötigen, um voll funktionsfähige Webanwendungen zu erstellen.

Vorteile:

  • Konzentriert sich hauptsächlich auf Entwickler
  • Erfordert keine zusätzlichen Abhängigkeiten oder andere Unterstützung
  • Möglichkeit, reguläre Webhosting-Dienste mit Standarddatenbanken wie MySQL zu nutzen
  • Übertrifft die meisten anderen Frameworks (nicht-MVC)
  • Gute Dokumentation sowie LTS (Support für einen langen Zeitraum)

Mängel:

  • Fehlender Namespace hingegen kann die Geschwindigkeit erhöhen
  • Unpraktisch für Unit-Tests, im Gegensatz zu anderen ähnlichen Frameworks
  • Eine kleine Anzahl von Bibliotheken, die direkt in das Framework integriert sind
  • Es ist ein ziemlich veraltetes Framework, das moderne PHP-Funktionen nicht unterstützt.
  • Vorhandensein von Sicherheitsproblemen, die ziemlich offensichtlich waren und seit vielen Jahren nicht vom Entwicklungsteam behoben wurden

KuchenPHP

Die erforderliche PHP-Version ist 5.5.9

CakePHP ist ein Framework, das den Prozess der Anwendungsentwicklung vereinfacht und beschleunigt und viel weniger Code benötigt. Dies ist ein modernes Framework für PHP 7, das einen flexibleren Zugriff auf Datenbanken sowie ein leistungsstarkes Codegenerierungssystem bietet. Dank dieser Funktionen wird die Entwicklung sowohl kleiner als auch komplexer Systeme einfacher, schneller und natürlich angenehmer. Wenn Sie sich schnell entwickeln möchten, dann ist CakePHP genau das, wonach Sie gesucht haben.

Vorteile:

  • Ein modernes Framework, das PHP-Versionen 5.5+ unterstützt
  • Leistungsstarkes Codegenerierungssystem, schnelle Entwicklungsfähigkeit
  • Sehr gut geeignet für die Entwicklung kommerzieller Webanwendungen (MIT-Lizenz)
  • Integrierter Datenbankzugriff sowie Caching, Validierung und Authentifizierung
  • Zu den umfangreichen Speichertools gehört Cross-Site-Scripting
  • Verhindern Sie Cross-Site-Angriffe mit Script-Injection sowie SQL-Injection
  • CSRF und Formularvalidierung
  • Gute Dokumentation haben
  • Aktiv weiterentwickeln

Mängel:

  • Nicht so gut für die Restful-API-Entwicklung geeignet wie Laravel oder die anderen oben genannten Frameworks

Zend


Erforderliche PHP-Version - 5.6, 7.0

Zend ist ein Framework, das eine Sammlung professioneller PHP-Erweiterungen mit über 158 Millionen Installationen ist. Dieses Framework wird verwendet, um Webanwendungen und -dienste mit PHP 5.6+ zu entwickeln und garantiert 100 % objektorientierten Code unter Verwendung einer breiten Palette von Programmiersprachenfunktionen.
Das Zend-Framework verwendet Composer, um Paketabhängigkeiten einzufügen; PHPUnit - zum Testen aller Pakete; Travis CI - als Service für kontinuierliche Integrationstests.

Vorteile:

  • Ideal für die Entwicklung kommerzieller Anwendungen
  • Objektorientierten
  • Viele Komponenten für die Validierung, Feeds und Formulare
  • Enthält nicht verwandte Komponenten

Mängel:

  • Nicht so geeignet für die schnelle Anwendungsentwicklung wie andere Frameworks

KraftstoffPHP


Die erforderliche PHP-Version ist 5.3.3

FuelPHP ist ein einfaches, flexibles, benutzerorientiertes Framework für die PHP-Versionen 5.3+, das die besten Ideen anderer Frameworks enthält und gerade veröffentlicht wurde!

Vorteile:

  • Caching ist optional
  • Paketauthentifizierung
  • Möglichkeit zur kontinuierlichen Weiterentwicklung
  • URL-Routing
  • Die neue Version wird vollständig objektorientiert sein und kann mit einem Linker installiert werden, und mehrere Anwendungen können nach einer einzigen Installation unterstützt werden

Mängel:

  • Ein ziemlich komplexes Framework für Anfänger zum Lernen (wenig Dokumentation)
  • Ein ziemlich neues Framework, das bisher nirgendwo unterstützt wird.
  • Geringe Investition durch die Open-Source-Software-Community (im Vergleich zu beispielsweise Laravel oder Phalcon)

Schlank


Erforderliche PHP-Version - 5.5

Slim ist ein Mikro-Framework für PHP, mit dem Sie schnell kleine, aber leistungsstarke Webanwendungen und APIs entwickeln können.

Vorteile:

  • Ist das schnellste verfügbare RESTful-Framework
  • Das Vorhandensein einer ausreichenden Menge an Dokumentation, um erfolgreich mit diesem Framework zu arbeiten
  • Ideal für die Entwicklung kleiner RESTful-APIs
  • Aktiv weiterentwickeln

Mängel:

  • Bei der Installation wurde eine kleine Anzahl möglicher Linker-Add-Ons vorgeschlagen

phppixie


Die erforderliche PHP-Version ist 5.3

Phpixie ist eines der beliebtesten umfassenden PHP-Frameworks. Es enthält standardmäßig großartige Kryptografie- und Sicherheitstools, Unterstützung für MongoDB und die Möglichkeit, Code mit dem Linker zu „tauschen“.

Vorteile:

  • Relativ neuer Rahmen
  • Ein Framework, mit dem man einfach loslegen kann
  • Die Dokumentation enthält Beispiele zur Verwendung des Codes
  • Gutes Routingsystem
  • Fähigkeit, Code schnell zu kompilieren
  • Ist HMVC-orientiert

Mängel:

  • Wenige Module
  • Keine Unterstützung für Komponenten, die unabhängig von abhängigen Objekten erstellt wurden

fettfrei


Erforderliche PHP-Version - 5.5

Es ist ein leistungsstarkes und dennoch einfach zu bedienendes PHP-Mini-Framework, das Ihnen dabei helfen soll, dynamische und robuste Webanwendungen zu entwickeln, und zwar sehr schnell!

Vorteile:

  • Nimmt minimalen Speicher in Anspruch
  • Leicht zu lernen
  • Behandelt URL-Routing-Optimierungen, Cache-Modelle und Code schnell
  • Gut für mehrsprachige Anwendungen
  • Bereite Unterstützung für SQL oder No SQL
  • Verfügbarkeit von Datenbanken
  • Viele Softwarepakete, einschließlich Komponententests, Bilder
  • Quelldateiverarbeitung, JavaScript/CSS-Optimierung, Datenvalidierung, offene ID und mehr

Mängel:

  • Zu viel für Mikro-Frameworks
  • Im Vergleich zu den oben genannten Frameworks hat es keine neuen Optionen
  • Ermöglicht Codewiederholung, im Gegensatz zu anderen MVC-Frameworks, die dieses Problem beheben

Yii 2.0

Vorteile:

  • Einfach zu installieren
  • Yii ist ein vollständig objektorientiertes Framework und nutzt die erweiterten PHP-Funktionen voll aus.
  • Das Yii-Framework kann einfach an Ihre Bedürfnisse angepasst werden. Nahezu jede Komponente des Frameworks ist erweiterbar
  • Yii ist eng mit Codeception integriert
  • Yii wird mit einer Sicherheitskomponente geliefert, die verschiedene Methoden bietet, um Ihnen beim Erstellen einer sichereren Anwendung zu helfen.
  • Yii gibt uns mehrere Tools an die Hand, die uns dabei helfen, den Zeitaufwand für nicht vorrangige Aufgaben zu reduzieren und uns auf die Hauptaufgabe zu konzentrieren.
  • Einfache Einrichtung für beste Leistung

Mängel:

  • Starke Klassenkopplung. Alles im System erbt von CComponent. Zugriff auf Modelle durch statische Methoden, wodurch sie auch dort verwendet werden können, wo sie nicht benötigt werden.
  • Die Template-Engine-Integration (Twig, Smarty) ist im Vergleich zu nativen Templates eher schwach. Und einheimische Nutzung ist keine Jagd.

Aura


Erforderliche PHP-Version - 5.4

Das Aura-Projekt ist eine Sammlung hochwertiger, gut getesteter, standardkonformer, unabhängiger semantischer Versionierungsbibliothekspakete, die in jeder Quellcodebasis verwendet werden können.

Jede Bibliothek ist eigenständig und enthält nur das Wesentliche für grundlegende Zwecke. Jedes der Bibliothekspakete ist völlig unabhängig: Es ist nicht nur mit Frameworks verbunden, sondern auch mit anderen Paketen. Somit gibt diese Funktion Entwicklern die Möglichkeit, entweder einen kleinen Teil dieses Frameworks oder das gesamte Framework zu verwenden.

Vorteile:

  • Nimmt wenig Speicherplatz in Anspruch
  • Verfügbarkeit von Leitfäden für den Einstieg in das Framework
  • Ideal für die Arbeit mit kleinen REST-APIs
  • Derzeit in aktiver Entwicklung
  • Zu den Add-Ons gehören: HTTP-Caching und Flash

Das ist alles! Ich hoffe, diese Liste und Beschreibung aller PHP-Frameworks wird Ihnen nützlich sein. Welches PHP-Framework verwendest du? Lass es mich in einem Kommentar wissen

Dieser Artikel behandelt keine technischen Begriffe und Konzepte, um den Inhalt einfach zu halten. Wenn Sie ein Programmierer sind, lassen Sie mich Ihnen sagen, warum Sie es vorziehen sollten Verwenden Sie Frameworks anstelle von reinem PHP für Ihre Projekte. Wenn Sie ein Unternehmer sind, lassen Sie mich Ihnen sagen, warum es so wichtig ist, dass Ihr Softwareentwickler darauf besteht entwickelte Webanwendungen und Websites mit Hilfe PHP-Frameworks.

Vergleich reines PHP und PHP-Framework kann wie Mathe sein.

Um ein schwieriges mathematisches Problem zu lösen, kannst du entweder ein Blatt Papier nehmen oder einen wissenschaftlichen Taschenrechner verwenden, um es zu lösen.

Die Lösung eines mathematischen Problems auf Papier zu finden, ist wie das Programmieren in reinem PHP, die Verwendung eines wissenschaftlichen Taschenrechners ist wie das Programmieren mit Frameworks.

Also was meine ich?

Natives PHP - Papiermathematik

Ein guter Schüler kann ein Problem in wenigen Schritten lösen. Genauigkeitsstufe - von 75 % bis 100 %.

Ein mittelmäßiger Schüler kann das Problem lösen oder auch nicht, er wird mehrere Schritte aufschreiben, um dasselbe Problem zu lösen. Hier liegt die Genauigkeit zwischen 50 % und 75 %.

Ein schlechter Schüler wird das Problem überhaupt nicht lösen können. Es werden jedoch viele, viele Schritte zur Lösung des Problems aufgezeichnet. Genauigkeitsstufe - von 0 % bis 50 %.

Wissenschaftlicher Taschenrechner

Jeder Schüler kann das Problem mit 100%iger Genauigkeit lösen, sobald er gelernt hat, wie man den Taschenrechner benutzt. Die vordefinierten Formeln im Rechner liefern schneller genaue Ergebnisse.

Problem mit reinem PHP

Reines PHP wird schwierig, wenn Leute anfangen, ihre eigene Logik zu schreiben. Jemand wird in der Lage sein, die Aufgabe in ein paar Codezeilen zu lösen, während jemand nicht einmal in ein paar hundert Zeilen in der Lage sein wird. Infolgedessen können beide den Code des anderen nicht lesen. Das Problem, das hier beginnt, ist also Inkonsistenz.

Warum Frameworks wählen?

Das Framework bietet Zuverlässigkeit, Konsistenz und große Zeitersparnis. Es verfügt über eine Vielzahl von Funktionen, sodass Sie das Rad nicht neu erfinden müssen. Sie haben fast alle Funktionen für die Entwicklung PHP-Webanwendungen. Da es im OOP-Stil entworfen wurde, können Sie die vorhandene Funktionalität erweitern, um die volle Kontrolle über die Anwendung zu haben. Das Framework erlaubt Ihnen nicht, schlechten Code zu schreiben, es sei denn, Sie tun dies natürlich absichtlich. Wenn Sie in einem Team arbeiten, wird die Integration Ihres gesamten Moduls sehr einfach, und das Framework hilft auch dabei, den Code des anderen zu verstehen.

Wenn Sie mit der Entwicklung eines Projekts beginnen, gibt es viele Dinge, um die Sie sich kümmern müssen. Das Framework erledigt alles für uns, sodass Sie sicher sein können, dass die Anwendung sauber und sicher ist. MVC-Muster ist eines der Schlüsselelemente von jedem modernes PHP-Framework, Logik und Präsentation zu trennen, ist eine sehr gute Praxis.

Projektänderung

Wenn Sie einen guten Eindruck von sich hinterlassen, wird der Kunde früher oder später zu uns zurückkehren, um die Website zu verbessern. Und hier kommt ein wichtiger Punkt - wenn das Projekt abgeschlossen wurde reines PHP müssen Sie entweder sehr hart arbeiten, um die neuen Wünsche des Kunden zu erfüllen, oder die weitere Arbeit mit dem Projekt vollständig aufgeben. Aber wenn das Projekt abgeschlossen war im Rahmen von, dann werden Sie in diesem Fall die ganze Kraft und Schönheit der gewählten Technologie spüren. Sie müssen lediglich Änderungen vornehmen und das aktualisierte Projekt an den Kunden zurückgeben.

Dann wirklich reines PHP ist so schlecht?

Absolut nicht. Pure PHP hilft, die Logik des Frameworks zu verstehen. Ihr logisches Denken kann mit verbessert werden reines PHP. Allerdings wird natives PHP erst dann schlecht, wenn es auf den Schreibtisch eines schlechten Programmierers trifft. Tauchen Sie nicht in ein Framework ein, ohne Programmiererfahrung zu haben reines PHP. Stellen Sie außerdem sicher, dass Sie die vollständige Dokumentation des Frameworks gelesen haben, bevor Sie mit dem Codieren beginnen, da es heutzutage in Mode gekommen ist, es zu verwenden natives PHP innerhalb des Frameworks, aber das ist absolut der falsche Weg, ein so nützliches Werkzeug zu verwenden.

Im Allgemeinen ist der einfachste Weg herauszufinden, was Frameworks sind, mit Hilfe meines Kurses.

Wir sprechen weiterhin über die beliebtesten und nützlichsten Tools für die Arbeit mit Sprachen. Dieses Mal konzentrieren wir uns auf PHP-Frameworks.

Laravel

Dieses Framework hat sich von einem vielversprechenden Framework zu einem der Anführer der PHP-Bewegung entwickelt. Eine kurze Beschreibung lautet wie folgt: Open Source, Arbeit mit dem MVC-Architekturmodell, komfortable und verständliche Oberfläche, erweiterte Funktionalität.

Der letzte Punkt manifestiert sich in folgenden Möglichkeiten:

  1. Unterstützung für Module von Drittanbietern, von denen es eine beträchtliche Anzahl gibt, was die Standardfähigkeiten des Frameworks erheblich erweitert.
  2. Umgekehrtes Routing, wodurch Sie während der Arbeit keine Zeit mit dem Aktualisieren von Links verschwenden müssen – alles geschieht automatisch.
  3. Eloquente ORM-Entwurfsmuster, die bei der Definition strenger Beziehungen zwischen Datenbankobjekten helfen.
  4. Automatisches Laden der Klasse. Dies reduziert zum einen die Codemenge, da include ... nicht geschrieben werden muss, zum anderen werden ungenutzte Klassen nicht mit allen Konsequenzen eingebunden.
  5. Unit-Tests – das Vorhandensein einer großen Anzahl von Tests, um Fehlerschichten zu vermeiden.
  6. Datenbank-Versionskontrollsystem. Wenn Sie erwarten, Ihr Produkt häufig und irrelevant zu aktualisieren, können Sie mit dieser Funktion keine Zeit mit der gleichen Art von Beiträgen verschwenden.

Wie Sie verstehen, ist dies keine vollständige Liste der Funktionen, die Laravel-Entwickler ihren Kunden zur Verfügung stellen. Für eine vollständige Liste besuchen Sie bitte die offizielle Website oder tauchen Sie persönlich in die Welt dieses Frameworks ein – es wird Ihnen bestimmt gefallen.

CodeIgniter

Dieses Framework, das bereits mehr als 11 Jahre alt ist, hat sich durch seine Unprätentiösität in Bezug auf die verwendeten Ressourcen, Einfachheit, Bequemlichkeit, eine riesige Menge an Dokumentation für Entwickler aller Ebenen und das Fehlen von Einschränkungen einen Namen gemacht. Einst wurde Laravel genau als Konkurrent von CodeIgniter geschaffen, daher war es bis vor kurzem ein universeller Maßstab.

Obwohl CodeIgniter so einfach wie jedes beliebte Framework ist, hat es auch ein paar nützliche Funktionen:

  1. Großartige Unterstützung durch die CodeIgniter Reactor-Community, einschließlich Bibliotheken, Modulen, Vorlagen und Dokumentation.
  2. Datenbankvorlagen, die der SQL-Syntax sehr ähnlich sind.
  3. Fähigkeit zum Cachen auf der Serverseite.
  4. Verwenden des Paketmanagers zum schnellen Einbinden von Bibliotheken über die Befehlszeile.

Aber CodeIgniter wird nicht von der Grundidee der Einfachheit und Zugänglichkeit abweichen. Daher lohnt es sich nicht darauf zu warten, dass dieses Framework alles für Sie erledigt, obwohl dies formal möglich ist.

Symphonie

Trotz der Tatsache, dass die Veröffentlichung der dritten Version bereits im Jahr 2015 stattfand, ist es die zweite Version von Symfony, die im Alleingang den 3. Platz in der Popularität unter den Frameworks einnimmt. Der Grund hier ist ähnlich wie bei CodeIgniter - Geschwindigkeit und allgemeine Einfachheit. Damit dies aber nicht gegen die Funktionalität verstößt, wird der Benutzer aufgefordert, eine von 3 Versionen für die Profilarbeit auszuwählen:

  1. Standard Edition - zum gegenseitigen Kennenlernen und Erledigen gemeinsamer Aufgaben. Darauf basiert das Distributionskit Hello World Edition, das genau ein Optimierungsskript zur weiteren Verwendung in Benchmarks enthält.
  2. Symfony CMF ist eine Anpassung für Entwickler, die mit CMS-Systemen arbeiten.
  3. REST Edition - Optimierung für die Arbeit mit REST-Architektur (Online-Shops, Suchmaschinen usw.).

Symfony gilt stereotyp als Framework für Kommandozeilen-Liebhaber. In der Tat hilft Ihnen die integrierte SensioGeneratorBundle-Schnittstelle, aus einer Textzeile ein ganzes Skelett für Ihren Code zu erhalten.

Ein unbestrittener Vorteil wird die Verfügbarkeit offizieller Dokumente in russischer Sprache sein. Es ist erwähnenswert, dass es nur für die erste Version von Symfony verfügbar ist, aber unter den inoffiziellen Veröffentlichungen finden Sie sowohl Übersetzungen offizieller Veröffentlichungen als auch unabhängige Dokumentation von hoher Qualität.

Yii

Yii wird in vielen Bewertungen als Hauptkonkurrent von Symfony dargestellt. Dafür gibt es in der Tat Gründe: Beide Sprachen arbeiten mit einem Full-Stack, beide haben Quellcodes auf GitHub, beide stellen die Template-Entwicklung recht gut dar. Während Symfony jedoch nur ein Modell und einen Controller bereitstellt, bietet Yii eine vollständige MVC-Interaktion. Darüber hinaus ist die Benutzeroberfläche in Yii viel bequemer, die Codegenerierung mit dem Gii-Browserelement ist hier etwas leistungsfähiger, und im Allgemeinen spart Ihnen Yii tatsächlich mehr Entwicklungszeit und die Anwendung arbeitet etwas schneller.

Nette Framework

Vielleicht das am wenigsten bekannte der Top-PHP-Frameworks, was angesichts seines 13-jährigen Alters und seiner umfangreichen Funktionen überraschend ist. Hier sind einige davon:

  1. Eines der produktivsten PHP-Frameworks.
  2. Perfekt für Anfänger, die Lernkurve ist ziemlich glatt.
  3. Leistungsstarke Tools zur Unterstützung: Tracy – zum Verfolgen von Fehlern, Latte – ein schneller und intuitiver Vorlagengenerator, Tester – ein Dienstprogramm zum qualitativ hochwertigen Testen Ihrer Anwendung unter realitätsnahen Bedingungen.
  4. Möglichkeit der gemeinsamen Arbeit mehrerer Entwickler an einem Projekt.
  5. Hervorragende Dokumentation und freundliche Community (und nicht nur auf Tschechisch).

Im Allgemeinen, wenn Sie Nette noch nicht ausprobiert haben – wir empfehlen es, wenn Sie irgendwelche Mängel finden – schreiben Sie unbedingt in die Kommentare.

Kurze Linie

CakePHP ist ein beliebter Klon von Ruby on Rails, der sich auf PHP konzentriert. Alle Vorteile sind gleich.

FuelPHP ist ein leichtes Framework, das aufgrund seines Mangels an Einzigartigkeit und hohen Erwartungen unterschätzt wurde. Wie Sie verstehen, wirkt sich dies nicht negativ auf die eigentliche Arbeit aus.

Phpixie - einer der wichtigsten "Chips" dieses Frameworks wird aktualisiert. Sie müssen nicht mehr mehrere Monate auf eine neue Revision warten. Gefunden -> Fix hochgeladen -> weiterarbeiten. Das Prinzip ist so.

Fat-Free ist ein sehr leichtes, schnelles und einfaches Framework für eine schnelle Entwicklung. Ein Minimum an Nebensächlichkeiten.

Slim ist ein Framework, das leicht zu erlernen und mit PHP zu beginnen ist, aber in der erwachsenen Berufswelt des Webs weitgehend ungenutzt ist.

Phalcon ist ein großartiges Framework mit hoher Leistung, geringer Speicher- und Dateisystemnutzung. Minus - das Projekt ist ziemlich grob und mit einer großen Anzahl von Unterwasser-C-Steinen.

Die Wahl des Herausgebers
Wahrsagen auf Spielkarten ist eine ziemlich beliebte Methode, um Ihre Zukunft herauszufinden. Und dazu müssen Sie neben dem Vorhandensein des Decks selbst mehr wissen ...

Eine ungewöhnliche Nachtsicht, die dank eines hellen Details - weißer Sand - in Erinnerung blieb, wird ziemlich sicher interpretiert. Grafen, ...

Warum träumt eine Frau von einer Eule: Sie symbolisiert die negative Vormundschaft einer Mutter oder einer anderen Frau. 1 Eule nach dem Traumbuch von Nostradamus Eine Eule sehen ...

Ein Traum unterscheidet sich von der Realität dadurch, dass darin alles möglich ist: Reisen in unsichtbare Welten, Zeitreisen und sogar Beobachtungen ...
Es gibt viele Optionen für Zaubersprüche. Es gibt Rituale, die Anfänger durchführen können, und es gibt solche, die sogar für erfahrene Magier gefährlich sind ....
Der Stier in einer Beziehung hat es nie eilig und bevorzugt einen langsamen, aber sicheren Weg. Es kommt oft vor, dass eine aktive Initiative ...
5 / 5 (3) Auf den ersten Blick scheinen die Vertreter dieser beiden Zeichen - Widder und Krebs - im Allgemeinen von verschiedenen Planeten zu stammen, also ...
Im Leben können viele Situationen auftreten, in denen sich die Frage stellt, wie man einen Mann zu Hause verzaubert. Meist anders...
Wenn Sie verliebt sind und sich verrückt nach einer Person fühlen und der Auserwählte keine gegenseitigen Emotionen zeigt, scheint die Welt stehen geblieben zu sein ....