Ein grobes Diagramm der Architektur des neuesten Großprojekts, an dem ich beteiligt war.
Es handelt sich nur um eine Grundskizze, die aus den tatsächlichen Architekturdokumenten adaptiert und in einer Weise dargestellt wird, die einem typischen n-Tier-Ansatz in Kombination mit einem typischen MVC-Ansatz ähnelt . Wie Sie sehen, sind die Logik- und Datenebenen über eine Serviceschicht und insbesondere eine REST-API verbunden , die von Recess , einem weniger bekannten PHP-Framework , inspiriert wurde .
Das Rad nicht neu erfinden
Ich arbeite mit drei Frameworks:
Zend Framework
Der Gigant von PHP-Frameworks mit einer beeindruckend gut geschriebenen Codebasis und einer umfangreichen Liste von Funktionen. Bei umfangreichen Anwendungen wird das Framework häufig angepasst, und ich finde es am angenehmsten, mit der Codebasis von ZF zu arbeiten. Aber Vorsicht, es ist kein Framework für Einsteiger .
Kohana
Kohana begann als Fork von CodeIgniter, und das war Grund genug für mich, es anfangs nicht zu benutzen. Heutzutage hat es sich zu einem soliden und eleganten Rahmen entwickelt, der sich durch einen hierarchischen MVC-Ansatz voneinander unterscheidet . HMVC ermöglicht eine größere Modularisierung als MVC . Für das Projekt im Diagramm habe ich Kohanas HMVC an ZF angepasst, aber ich habe damit begonnen, Kohana für kleinere Projekte zu verwenden und es auch für größere zu berücksichtigen.
CodeIgniter
Ich benutze es nur aufgrund eines von mir geerbten Legacy-Projekts, vermeide es wenn möglich.
Wie die anderen Antworten gezeigt haben, ist ein ORM immer hilfreich. Ich benutze Doctrine ausgiebig und Sie sollten sich die brandneuen Mapper für CouchDB und MongoDB ansehen . Skalierbarkeit ist ein Muss für umfangreiche Anwendungen und Sie sollten NoSQL-Lösungen evaluieren .
Wichtig ist jedoch, dass größere Anwendungen in der Regel mit besonderen Herausforderungen verbunden sind. Sie sollten jede gängige Drittanbieterlösung bewerten, die es gibt, und Sie werden wahrscheinlich viel von ein paar obskuren profitieren. Als ich Recess zum ersten Mal evaluierte, war es noch weit davon entfernt, produktionsbereit zu sein, aber sein Ansatz machte es im Wesentlichen zu einem Teil des Projekts.
Performance
Auf typischen Websites kann es passieren, dass Sie nicht einfach Ausgabe-Caching und Opcode-Caching ausführen müssen . Bei umfangreichen Anwendungen sollten Sie jedoch das Speicher-Caching in Betracht ziehen, das in den meisten Fällen auf Memcached basiert .
xdebug ist meistens als Debugger bekannt, kann aber auch als Profiler dienen . Ich habe vor kurzem angefangen, Zend Server zu verwenden und ich bewundere die Code-Tracing-Funktionen . Leider sind diese in der Community Edition nicht verfügbar , aber xdebug ist eine recht anständige Alternative.
Wenn Sie Apache verwenden, stellen Sie sicher, dass Sie das Beste daraus machen . nginx und lighttpd sind anscheinend die bessere Wahl , was die Leistung angeht, aber ich habe sie nicht oft benutzt und ich kann es nicht wirklich sagen.
Was die Datenbank anbelangt, so wirkt Doctrines Query & Result Caching Wunder, insbesondere in Kombination mit Memcached . Und natürlich können wir das Frontend nicht vergessen. Das Exceptional Performance- Team von Yahoo hat eine umfangreiche Liste von Best Practices zusammengestellt . Ich bin nicht wirklich ein Front-End-Entwickler, aber ich habe erstaunliche Ergebnisse bei Soloprojekten gesehen.
Schließlich hat PHP einen brandneuen Mechanismus zur Garbage Collection .
Sicherheit
Die Welt der PHP-Sicherheit ist, gelinde gesagt, chaotisch. Ich bin kein Experte. Behandeln Sie die folgenden Punkte als allgemeine Tipps:
Öffnen Sie das Webanwendungssicherheitsprojekt
Es gibt viele gute Sachen, aber für einen schnellen Überblick sollten Sie mit der Top-Ten-Liste beginnen . Und suchen Sie nach PHP-Lösungen für diese häufig auftretenden Sicherheitslücken.
Stack-Schwachstellen
Es ist eine gute Angewohnheit, regelmäßig die offenen Fehler in PHP zu überwachen . Auch wenn Sie selbst kein Experte sind, gibt es fast immer Tipps zur Umgehung von Sicherheitsbedrohungen. Und natürlich sollten Sie die Gewohnheit auf jeden anderen Teil des Stapels ausdehnen, insbesondere auf die am stärksten gefährdeten Teile wie den Webserver und die Datenbank.
Die Menge bei IT Security Stack Exchange kann Ihnen mit fundierteren Antworten behilflich sein.
Weitere Lektüre