Vor ein paar Jahren wandelte sich PHP5 von einer prozessorientierten Sprache zu einer objektorientierten Sprache, was in verschiedenen technischen Foren für großes Aufsehen sorgte. Viele Leute behaupteten, dass PHP sich selbst zerstören würde, aber bald nachdem sich der Staub gelegt hatte, war dies der Fall Die Leute wechselten von der Nichtunterstützung zur Unterstützung. PHP hat sich auch von einem scherzhaften Kinderspielzeug in der 4.0-Ära zur drittgrößten Sprache nach Java und C entwickelt. Da ich an der ganzen Debatte beteiligt war, dachte ich, ich hätte ein umfassendes Verständnis für objektorientierte Programmierung und begann nach und nach, die objektorientierte Programmierung vollständig zu übernehmen. Nach 2008 begann ich sogar, Programme nur noch unter dem Zend-Framework zu schreiben.
Aber die Arbeitserfahrung der letzten Monate hat mich zum Nachdenken gebracht und ich begann, die berühmteste Frage des Jahres zu überdenken: „Wenn es wirklich vollständig objektorientiert ist, warum verwenden wir dann nicht direkt JAVA?“ Warum brauchen wir zwei JAVA? „Ja, einer der Gründe für die Verwendung von PHP ist, dass wir nicht objektorientiert sein müssen.“ Alle Programmiertechnologien und -konzepte sind nur Mittel, um Kundenbedürfnisse in kürzester Zeit zu erfüllen. Ohne dieses Ziel ist es zweifellos falsch, über das Open-Source-Forum zu sprechen respektiert PHPBB, verachtet aber den technischen Inhalt des DISUCZ-Codes. Wenn es jedoch darum geht, tatsächlich ein Forum zu erstellen, wer von uns verwendet PHPBB? Die meisten Foren in China gehören DISCUZ. In den letzten zwei Jahren habe ich mich auf die Objektorientierung beschränkt und viel Zeit verschwendet. Das ist ein schwerwiegender Fehler, den ich gemacht habe.
Also habe ich beschlossen, mein Verständnis der PHP-Programmierung neu zu ordnen. In Zukunft kann ich bei der Auswahl von Projekten eine passendere Architektur wählen, anstatt mich nur auf die Technologie zu verlassen. Begrüßen Sie alle zum Ziegelmachen.
1. Die Rolle der Funktionen
Heutzutage sollte jeder Freund, der kein Computer-Student ist, eine Computersprache gelernt haben, wenn es ausreicht Glücklicherweise kann es C sein. Verzweigungsanweisungen und Schleifenanweisungen sind obligatorisch. Wenn Sie die Funktionen nicht gut lernen, werden Sie wahrscheinlich nachlässig sein und bestehen. Selbst wenn es so etwas wie eine Funktion auf der Welt nicht gibt, kann das Programm dennoch alle Funktionen ausführen (schade, ich habe in den letzten Monaten gerade ein solches Projekt gesehen).
Wofür brauchen wir also Funktionen? Unzählige Lehrbücher sagen uns, dass es um die Wiederverwendbarkeit geht. Ja, nachdem eine Funktion geschrieben wurde und Sie beim nächsten Mal dieselbe Funktion verwenden, können Sie sie einfach direkt aufrufen, ohne sie erneut schreiben zu müssen. Dies ist die ursprüngliche Absicht und Grundfunktion der Funktionserfindung. Wenn wir jedoch davon ausgehen, dass eine Funktion weniger häufig verwendet wird, sollten wir sie dann nicht verwenden? Nein, selbst wenn wir eine prozessorientierte Programmierung übernehmen, müssen wir immer noch so viele Funktionen wie möglich verwenden, die Funktionen so weit wie möglich unterteilen und für jede Funktion eine unabhängige Funktion schreiben. Die Verwendung funktionaler Programmierung hat die folgenden offensichtlichen Vorteile:
Klare Logik. Egal wie komplex eine Funktion ist, wenn sie in mehrere Einzelfunktionen unterteilt wird, ist die Logik jeder einzelnen Funktion sehr einfach. Wir können den Code einfach entsprechend der Logik ausfüllen, ohne uns darum kümmern zu müssen >
Lassen Sie uns abschließend über die grundlegenden Methoden der objektorientierten Programmierung sprechen. In Klassen nennen wir Variablenattribute und Funktionen. Jedes Mal, wenn Ausländer ein neues Konzept vorschlagen, erstellen sie immer neue Namen Die Sache ist, dass wir, wenn wir Eigenschaften und Methoden erwähnten, immer sachkundiger wirkten als diejenigen, die über Variablen und Funktionen sprachen. Natürlich sind sie im Wesentlichen genau dasselbe.
Warum Klassen verwenden? Nach meinem persönlichen Verständnis liegt das zunächst vor allem am Umfang der Variablen. Die Sicherheit globaler Variablen wurde im Einführungs-Tutorial der C-Sprache erwähnt. Sie ist nicht nur anfällig für Schwachstellen und Hacker, sondern Sie werden aufgrund des gleichen Namens auch unterschiedliche Erwartungen haben, wenn Sie Ihren eigenen Code schreiben globale Variable. Kein Problem. Wenn Sie jede Variable mit Parametern übergeben, ist dies umständlich. Dank eines tollen Programmiertools wie Netbeans muss ich diese Variablen tatsächlich nicht manuell eingeben, sondern schaue sie nur unzufrieden an. Offensichtlich handelt es sich um eine Variable, die von den meisten Funktionen oder zumindest einer Gruppe von Funktionen verwendet wird, aber es ist immer unangenehm, wiederholt Werte übergeben zu müssen. Es gibt also Klassen, und ab PHP5.0 kann der Umfang von Attributen (Variablen) und Methoden (Funktionen) detailliert in der Klasse definiert werden.
Gleichzeitig besteht ein weiterer grundlegender Vorteil der Verwendung von Klassen darin, dass Sie Funktionen gruppieren können. Wenn genügend Funktionen vorhanden sind, ist es schwierig, die Funktionen nach Klassen zu finden. Die Methoden, die nur von anderen Funktionen aufgerufen werden und nicht direkt von Benutzern aufgerufen werden müssen, können einfach privat gemacht werden, um zu verhindern, dass Kollegen sie versehentlich aufrufen Auf diese Weise wird eine öffentliche Funktionsbibliothek vollständig in mehrere Klassen zerlegt.
Oft sind die Grundfunktionen einer Klasse von universellem Wert. Wir können eine Klasse von einem Projekt in ein anderes kopieren, ohne uns Sorgen machen zu müssen, dass etwas schief geht Bereiche können dies nicht tun.
Hier muss ein Problem geklärt werden: Viele Leute glauben fälschlicherweise, dass die Aufteilung einer Funktionsbibliothek in mehrere Funktionen das Programm beschleunigt. Sie verstehen, dass jede Seite nur diejenigen aufruft, die sie verwenden . Je kleiner die Dateikapazität dieser Funktionsbibliothek oder Klasse ist, desto schneller ist sie natürlich. Tatsächlich ist die Situation genau umgekehrt. Wir alle wissen, dass die Geschwindigkeit beim ersten Öffnen einer WORD-Datei möglicherweise langsamer ist, beim zweiten Öffnen kurz danach jedoch viel schneller Dies liegt daran, dass WORD-Dateien und die WORD-Software selbst im Speicher zwischengespeichert werden. Auf die gleiche Weise wird eine Funktionsbibliothek unabhängig von ihrer Größe zwischengespeichert, wenn die Seite zum ersten Mal aufgerufen wird, und es ist natürlich viel schneller, sie erneut zu öffnen. Wenn eine Seite ursprünglich eine enthält Wenn nach der Zerlegung mehrere Dateien eingebunden werden müssen und die Dateisuche mehr Zeit in Anspruch nimmt als das Laden, wird die Ausführungsgeschwindigkeit des Programms durch die Zerlegung einer Funktionsbibliothek zusätzlich verringert , Klassen Auch die Instanziierung nimmt eine gewisse Zeit in Anspruch. Natürlich sind diese Geschwindigkeitsverluste bei der heutigen Computerhardware völlig vernachlässigbar. Daher ist die Entwicklung der Hardware auch eine der Grundlagen für die Popularität der objektorientierten Programmierung.
In prozessorientierten Programmen werden wir also weiterhin Klassen verwenden. Natürlich werden Klassen in prozessorientierten Programmen nur in drei Situationen benötigt:
Wann Das Projekt ist groß genug, dass eine Funktionsbibliothek den Leuten schwindlig macht.
Wenn wir feststellen, dass eine bestimmte Funktion, die wir geschrieben haben, universell ist;
Wir nennen die Funktion, die wir zuvor geschrieben haben, Klassen oder Open-Source-Klassen von anderen online gepostet.
Nach der Verwendung einfacher Klassen können Sie immer noch nicht behaupten, dass Ihre Website objektorientiert ist. Ich habe gerade „(Teil 1)“ nach dem Titel dieses Beitrags hinzugefügt. Das heißt, im Rest dieses Artikels werden wir natürlich weiterhin nur über die Technologien sprechen, die in prozessorientierten Prozessen eingesetzt werden können eignen sich auch für Objektorientiert. Ich werde mein Verständnis von objektorientiert im nächsten Beitrag zum Ausdruck bringen.
4. Vorlagen
Auch wenn Sie es noch nie verwendet haben, müssen Sie vom berühmten Smarty gehört haben. Ich habe es zum ersten Mal durch xoops kennengelernt. Damals habe ich nur ein einfaches Message Board erstellt, daher war das Erlernen von SMARTY sehr mühsam. Ich erinnere mich, dass das beste SMARTY-Online-Tutorial, das ich damals gefunden habe, das Smarty-Tutorial von Big Brother war. Nach einer Weile haben die Brüder im Joy International Village zusammengearbeitet, um das gesamte Smarty-Dokument zu übersetzen Gib auf. Smarty, weil ich darauf bestehe, dass es keinen Unterschied zwischen {$x} und gibt. Ich benutze so ein großes Ding. Es ist ziemlich unwürdig. Nun, hier ist eine Erklärung der einfachen PHP-Vorlagenverwendung, die ich verwendet habe, oh, ich verwende sie heute noch manchmal:
文件demo.php: 48 49 view plaincopy to clipboardprint? 50 <?php 51 $userName='张三'; 52 include_once 'templates/demo.phtml'; 53 ?> 54 <?php 55 $userName='张三'; 56 include_once 'templates/demo.phtml'; 57 ?> 58 文件demo.phtml: 59 60 view plaincopy to clipboardprint? 61 <html> 62 ...... 63 <body> 64 你好,<?php echo $userName;?> 65 </body> 66 </html> 67 <html> 68 ...... 69 <body> 70 你好,<?php echo $userName;?> 71 </body> 72 </html>
Sehen Sie, es wird keine Technologie verwendet, ist das nicht nur eine Vorlage? Eine Zeit lang gab es im Forum immer eine Diskussion über Smarty. Leider blieben die Leute still und es gab keine Reaktion. Bis vorletztes Jahr wurde die Template-Technologie eingeführt Bald darauf wurde von Zend ein eigenes Framework verwendet, das auch PHP als natürliche Vorlage verwendete. Im selben Jahr wurde Smarty nicht mehr als Kernprojekt von PHP entwickelt http://smarty.php.net, Sie können eine Erinnerung sehen:
76
77 Smarty ist kein Unterprojekt des PHP-Projekts mehr und ist anschließend in eine eigene Domain umgezogen: www.smarty.net
78
79 Daher ist es unbedingt erforderlich, Seiten und Programme zu trennen, es sei denn, Sie erstellen Open-Source-Programme oder selbst -Service-Website-Erstellung gibt es keine Möglichkeit, die Sicherheit von Vorlagen zu kontrollieren, andernfalls besteht überhaupt keine Notwendigkeit, Vorlagen zu verwenden.
80
81 5. Generieren statischer Seiten VS Caching + pseudostatisch
82
83 Als ich anfing, eine Website mit PHP zu erstellen, habe ich Ich habe den Artikel „Ein CMS-System mit dem Namen 9466“ verwendet. Die darin enthaltene statische HTML-Generierungstechnologie hat mich überrascht. Obwohl die Version zu diesem Zeitpunkt noch viele funktionale Mängel aufwies, habe ich immer noch viel Mühe darauf verwendet, sie zu ändern und zu erlernen Das Erstaunliche ist, dass ich gerade nach „9466 Slime Modified Version“ gegoogelt habe und es tatsächlich viele Websites gibt, die Downloads anbieten. Im Jahr 2006 habe ich eine Website für ein Unternehmen erstellt, die URL lautet http://www.nbssdz.com. Dieses Mal habe ich das CMS von Grund auf neu geschrieben und auch die Technologie zum Generieren statischer Seiten verwendet. Mittlerweile verwende ich diese Technologie jedoch nicht mehr. Open-Source-Programme wie Joomla, PHPWind, Discuz und Zend Framework haben uns eine weitere Technologiedemonstration geliefert: Pseudostatik.
84
85 Die Generierung statischer Seiten bietet zwei Vorteile: Der eine besteht darin, die Zugriffsgeschwindigkeit auf die Website zu verbessern und die Serverlast zu reduzieren. Der andere besteht darin, Suchmaschinen zu optimieren und mehr Seiten einzubeziehen dieser Seite. Der Nachteil statischer Seiten ist natürlich „statisch“. Es klingt wie Unsinn, aber viele dynamische Funktionen können nicht auf statischen Seiten implementiert werden, z. B. die Anzeige unterschiedlicher Inhalte entsprechend unterschiedlicher Benutzerberechtigungen. Daher wird Pseudostatik jetzt immer beliebter. Die Funktion von Pseudostatik besteht, wie der Name schon sagt, darin, statische URLs für dynamische Seiten zu fälschen, um die Einbeziehung in Suchmaschinen zu fördern. Meine Website http://www.10000j.com basiert auf dem Zend-Framework und verfügt daher natürlich über Pseudostatik. Statische Funktion. Natürlich ist das URL-Verzeichnisformat zu tief und für die Aufnahme nicht geeignet. Ich werde mir nach dem Jahr die Zeit nehmen, Änderungen vorzunehmen: http://czj.kiloweb.cn Das Verzeichnisformat ist sehr flexibel anpassbar. Natürlich ist die Serverlast von pseudostatischen Seiten nicht nur höher als die von statischen Seiten, sondern auch höher als die von gewöhnlichen dynamischen Seiten. Daher müssen wir das Caching flexibel nutzen, um die Reaktionsgeschwindigkeit der Website zu verbessern -static hat hinsichtlich der Reaktionsgeschwindigkeit immer noch keinen Vorteil.
86
87 Daher können wir für traditionelle Content-Publishing-Kategorien mit wenigen Funktionsanforderungen und Websites mit überlasteten Servern weiterhin die Technologie der Generierung statischer Seiten und für Websites mit Berechtigungen und Klickzählung verwenden Für Websites, die eine langfristige Wartung, häufig hinzugefügte Funktionen oder sogar unabhängige Server erfordern, sollte pseudostatische Technologie verwendet werden. Schließlich können einige Funktionen nicht durch statische Seiten realisiert werden. Auch wenn einige Funktionen „einen Weg finden“ können, sie zu erreichen (z. B. durch Ajax und Iframe), ist der Zeitaufwand für das „Finden eines Weges“ zu hoch.
88
89 6. Ajax
90
91 Ajax ist eine aufregende Technologie, aber der Nachteil von AJAX besteht darin, dass die Website so viel Code benötigt hat stark zugenommen. In einem aktuellen Projekt musste ich iframe verwenden, da die Seite gb2312 verwendete und die Load()-Funktion des von mir verwendeten JQuery-Frameworks nur utf8 unterstützte, und dann fand ich heraus, dass das ein bisschen magisch ist, nachdem ich es verwendet habe Nachdem ich so viele Jahre lang iFrame verwendet hatte, und nachdem ich JQuery fast zwei Jahre lang verwendet hatte, stellte ich fest, dass Iframe eigentlich nicht schlecht ist und ich dadurch viel weniger Code schreiben konnte. Im letzten Jahr oder so habe ich mit jquery viele Dinge getan, die meinen Chef deprimiert haben: Ich habe einige Spezialeffekte erstellt, nach denen Kunden nie gefragt haben, nur weil sie technisch umwerfender sind, was viel Zeit verschwendet macht Leute, die jquery nicht verstehen Der Künstler und der Chef haben keine Möglichkeit, es selbst zu ändern. Ich möchte also sagen, dass Ajax eine sehr gute Sache ist und JQuery das erstklassige Ajax-Framework ist. Gute Dinge sollten jedoch nicht missbraucht werden. Sie sollten von der tatsächlichen Situation ausgehen und sie nur verwenden, wenn es eine gibt Anstatt mich zu fragen, was ich zuvor gesagt habe, muss man sie nutzen, wenn ein Bedarf besteht, und man muss sie nutzen, wenn kein Bedarf besteht.
92
93 7. XML und JSON
94
95 Der Vorteil des Besuchs des Forums besteht darin, dass Sie immer über die Entwicklungstrends beliebter Technologien auf dem Laufenden bleiben können. Eines Tages vorletztes Jahr schlugen beispielsweise plötzlich viele Leute vor, JSON anstelle von XML zu verwenden. Ich unterstütze diesen Vorschlag mit beiden Händen. Neben der Verbesserung der Zugriffsgeschwindigkeit wird die Verwendung von JSON auch die Entwicklungseffizienz erheblich verbessern. json_encode()
96 , json_decode(), nur zwei einfache Funktionen, können PHP-Arrays und JSON problemlos direkt konvertieren, was weitaus praktischer ist als SimplexML und Dom. Daher erstellen wir die meiste Zeit weder die Sitemap noch RSS. Wir übergeben einfach Werte an jquery. Es ist nicht erforderlich, XML zu verwenden.
Das Obige ist der Inhalt des Überdenkens der PHP-Programmiermethode (Teil 1). Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (m.sbmmt.com )!