Heim  >  Artikel  >  PHP-Framework  >  Drupal vergleicht mit thinkphp, um die inländische Open-Source-Umgebung zu sehen

Drupal vergleicht mit thinkphp, um die inländische Open-Source-Umgebung zu sehen

青灯夜游
青灯夜游nach vorne
2021-09-29 19:50:042846Durchsuche

Heute bietet Ihnen dieser Artikel einen Vergleich zwischen ThinkPHP und Drupal, anhand dessen Sie den aktuellen Status der chinesischen und ausländischen Softwareindustrie sowie der inländischen Open-Source-Umgebung sehen können!

Drupal vergleicht mit thinkphp, um die inländische Open-Source-Umgebung zu sehen

Wohnen, Heiraten, medizinische Versorgung, Bildung und Altenpflege sind jeweils ein großer Berg. „Geld verdienen“ muss oberste Priorität haben. Daher ist ThinkPHP, das nur von zwei Kernentwicklern entwickelt wurde, zur Hoffnung vieler Menschen geworden. Auf der anderen Seite gibt es kein „Programmierer essen nur Jugendnahrung“. Bei Open-Source-Software-Community-Treffen sehen wir oft Menschen in den Fünfzigern 60er Jahre, die immer noch ein Lächeln in den Augen haben, suchen nach dem Sinn des Lebens und lassen sich von ihrem Lebensunterhalt nicht allzu sehr beunruhigen. Sie träumen davon, dass das, was sie tun, die Welt erhellen kann Verwandeln Sie ihr Leben in großartige Werke, die zusammen mit der menschlichen Zivilisation weitergegeben werden. So wurde Drupal von allen gelobt und segelte schnell dem Meer der Sterne entgegen. Dieser Artikel erzählt eine traurige Geschichte und denkt darüber nach, wohin Leute gehen sollten, die denselben Text lesen. Diese Geschichte sollte mehr Menschen bekannt sein.

Vergleichen Sie ThinkPHP und Drupal, um den aktuellen Status der chinesischen und ausländischen Softwareindustrie zu sehen.

Über ThinkPHP und Drupal (auf Chinesisch als „Wassertropfen“ übersetzt) ​​zusammen zu sprechen, wird viele Entwickler neugierig machen, aber aus der Perspektive des Die Entwicklung chinesischer und ausländischer Software-Ökosysteme ist wirklich ein guter Ausgangspunkt für die Diskussion. Dieser Artikel stellt einige Vergleiche zwischen den beiden Systemen in verschiedenen Aspekten dar, aber der Vergleich ist nicht der Hauptzweck des Schreibens Unterschiede zwischen chinesischen und ausländischen Softwareindustrien und einige daraus resultierende Gedanken helfen Entwicklern bei der Planung ihrer Karriere und bieten Entscheidungsgrundlagen für IT-Entscheider.

Beide Systeme sind Open-Source-freie PHP-Anwendungen. Lassen Sie uns zunächst eine kurze Einführung geben:

ThinkPHP:

Produktpositionierung: PHP-Entwicklungsframework, Entwickler können auf dieser Basis weiterhin ihre eigenen Anwendungssysteme entwickeln und erstellen

Entwicklungsagentur: Entwickelt von der inländischen „Shanghai Dingxiang Information Technology Co., Ltd.“

Gründer: Liu Chen, nicht viele Informationen, Baidu Query ist leitender Berater für Open-Source-Software, leitender PHP-Programmierer, Kanyun-CEO, mehr Über 15 Jahre Erfahrung in der Entwicklung und Verwaltung von Internetprodukten. Zu den Hauptforschungsgebieten gehören Webanwendungsarchitektur und -entwicklung sowie Produkt-User-Experience-Design. Ich bin der inländischen Open-Source-Industrie verpflichtet

Entwicklungszeit: Erstmals geboren Anfang 2006

Open-Source-Protokoll: Apache 2

Offizielle Website-Adresse: http://www.thinkphp.cn/

Benutzergruppe: Chinas inländische Klein- und Kleinstunternehmen genießen im inländischen Entwicklerkreis ein hohes Ansehen. Die offizielle Website beschreibt sich selbst als „das einflussreichste PHP-Framework und Pionier“. in China“ „

Berühmte Fälle: 56 Group, Lenovo Question Bar, CYTS Happy Travel, Pocari Sweat, Starbucks, Metersbonwe's Bangou Mall, TCL's Online Mall, Sina WeChat, Aoxing, China Cheyou Technology usw.

Teamgröße: Dort Es gibt keine offiziellen Daten, aber jede Datei des Frameworks verfügt über Autoreninformationen. Laut dieser Statistik gibt es insgesamt 7 Personen, darunter zwei Hauptentwickler (die mehr als 90 % des Codes beisteuern). Diese Daten sind nicht verfügbar Laut den Abfrageergebnissen der Dingxiang Company auf der Qichacha-Plattform, die zum Community-Ökosystem beitragen, beträgt die Unternehmensgröße weniger als 50 Personen und die Anzahl der versicherten Personen 3. Systemdateien: Berechnet auf Basis der aktuellen Version 6.0.7 , Anzahl der Erstinstallationsdateien 569, belegt 2,41 MB Speicherplatz

Drupal: Produktpositionierung: ein vollständiges Back-End-System (Back-End-Daten- und Kontrollzentrum), das für das Back-End von APPs verwendet wird , Miniprogramme, Websites, Internet der Dinge usw. Entwicklung

Entwicklungsorganisation: Eine gemeinnützige Open-Source-Community, organisiert von der Drupal Foundation, die von mehr als 200 Ländern auf der ganzen Welt mit aufgebaut wurde

Gründer: Ursprünglich initiiert von Dr. Dries Buytaert aus Belgien lautete 2008: „Java Applications“ „Performance Analysis and Optimization Analysis Technology“, James Gosling, der Erfinder von Java, ist Mitglied seines Doktorandenverteidigungskomitees ://dri.es/about

Entwicklungszeit: Erstgeboren im Jahr 2000

Open-Source-Vereinbarung: GPL 2.0

Offizielle Website-Adresse: https://www.Drupal.org/

Benutzergruppe: Unternehmen, Regierung Agenturen, Universitäten, Einzelpersonen usw. aus der ganzen Welt, einschließlich des Marktanteils der 500 größten Unternehmen der Welt Mehr als 80 %, die berühmte IDE: phpstorm integriert direkt das neue Drupal-Projekt

Berühmte Fälle: Inland: Huawei, JD .com, Baidu, Tencent, Tsinghua, Peking University, Guizhou Municipal Government Station Group, Zhenkongfu usw.; ausländische: Tesla, Google, Honda, Qualcomm, Vereinte Nationen, Europäische Union, Harvard University, MIT, Disney, NASA, Pfizer, usw.

Teamgröße:

Verfügt über die weltweit größte und aktivste Open-Source-Community mit mehr als 1.800 aktiven Kernentwicklern. Es gibt mehr als 120.000 staatliche Mitwirkende (Code, Dokumentation, Designer usw.), darunter mehr als 2.000 Menschen in der chinesischen Untergemeinschaft, und das wichtigste Fahrunternehmen Acquia hat mehr als 1.100 Mitarbeiter. Derzeit werden durchschnittlich etwa 1.300 Code-Einreichungen pro Woche generiert.

Systemdateien: Basierend auf der aktuellen Version 9.1.7 beträgt die Anzahl der anfänglich installierten Dateien 18.770 und belegt 71,2 MB Speicherplatz

Warum ThinkPHP und Drupal:

Eines ist ein beliebtes Framework in China, das andere ist ein komplettes Back-End-System, das international beliebt ist (es ist auch das leistungsstärkste und flexibelste System der Welt, gemessen an seiner Größe sind sie nicht dabei). Es gibt überhaupt keinen Vergleich in Bezug auf die Marktpositionierung, aber ihre Erkundung ist von großer Bedeutung für das Verständnis der chinesischen und ausländischen Softwareökologie. Was wäre, wenn ich Ihnen direkt sagen würde, dass Drupal alles kann, was ThinkPHP kann? , und es ist eleganter und prägnanter? Jetzt wird es interessant, machen wir weiter.

Normalerweise sind inländische Entwickler, die Drupal verwenden, Entwicklungsveteranen mit langjähriger Erfahrung. Sie sind Schritt für Schritt mit der Zeit gegangen. Sie müssen ThinkPHP bis zu einem gewissen Grad kennen oder verstehen, aber Entwickler, die ThinkPHP verwenden, verstehen es möglicherweise nicht unbedingt Der Grund, warum sich Entwickler, die ThinkPHP verwenden, für Drupal entscheiden, ist im Allgemeinen, dass das Framework eine gemeinsame Grundlage bietet als das zugrunde liegende PHP und im Vergleich zur sekundären Entwicklung von Systemen wie Imperial CMS nicht eingeschränkt ist kann sich nach Belieben umsetzen, aber vor Drupal werden die Dinge anders, was den Entwicklern das Gefühl geben kann, einen Schatz gefunden zu haben. Hier müssen wir kurz die Systemarchitektur von Drupal vorstellen Ebenen:

Die unterste Ebene:

ist die Framework-Ebene, die auf dem beliebten Symfony-Framework basiert und als das berühmteste Framework der Welt gilt Framework, basieren ebenfalls auf Symfony oder stammen von Symfony. Entwickler können schnell mit der Entwicklung beginnen. Fabian, der Autor des Symfony-Frameworks, ist eine weitere bekannte Figur wird auch in Drupal verwendet. Drupal ist das bekannteste Beispiel für Symfony. Auf der offiziellen Website wird Drupal an erster Stelle aufgeführt, und die Drupal-Community beteiligt sich auch an Symfony-Codebeiträgen.

Die zweite Schicht:

ist die Datenschicht, die durch Entitäten dargestellt wird und verschiedene Daten nach oben bereitstellt. Zu dieser Schicht gehört das ORM-Konzept und das Modellkonzept in ThinkPHP Anfänge.

Die dritte Ebene:

Entwickler handhaben verschiedene Geschäftslogiken auf dieser Ebene.

Hier ist zu beachten, dass Entwickler bei der Verwendung von Drupal nicht unbedingt Schicht für Schicht aufrufen müssen span. Direkt gegenüber einer bestimmten Ebene, sodass bei der Entwicklung direkt in Richtung der Framework-Ebene das gesamte System als Framework verwendet werden kann, genau wie ThinkPHP-Entwickler das ThinkPHP-Framework direkt verwenden. Aus diesem Grund kann Drupal alles, was ThinkPHP kann Der Unterschied besteht darin, dass Drupal das Symfony-Framework verwendet. Abgesehen davon ist ThinkPHP stark von Symfony beeinflusst und übernimmt in vielen Aspekten sogar direkt das Symfony-Framework (jeder Entwickler verdient also Respekt). Es ist nicht nötig, das Wort „Plagiat“ zu verwenden. Der Hauptprozess ist fast derselbe, aber es gibt einen großen Unterschied in der Reife und den Details. Diese Lücke wird anschaulich durch ein Beispiel veranschaulicht:

In In der Zeit, in der die Vorfahren der Menschen Seile zum Zählen banden, war eine Frucht eine Frucht, ein Fisch ist ein Fisch. Wenn die Zahl „1“ dahinter von bestimmten Dingen abstrahiert wird, hat die Menschheit einen großen Sprung gemacht Weniger als der Einsatz von Feuer und dann die Erfindung von Zahlen und Mathematik usw. haben die Menschen die Welt ständig erforscht und abstrahiert. Man kann sagen, dass die Je höher der Abstraktionsgrad, desto stärker ist die Bedeutung und desto direkter ist sie auf das Wesentliche ausgerichtet.

Viele großartige Arbeiten erfordern enorme Arbeitskräfte und Zeit, um sie anzusammeln. Wie groß ist also die Akkumulationslücke zwischen ThinkPHP und Symfony oder zwischen ThinkPHP und Drupal? Was ich Ihnen hier direkt und entschieden sagen kann, ist, dass es eine Lücke zwischen der Grundschule und dem College gibt, wobei die Mittelschule und die weiterführende Schule dazwischen liegen. Der Hauptgrund dafür ist die Größe der Gemeinde, die Ökologie und die Zeit. ThinkPHP und Symfony sind beide Frameworks und die direktesten Konkurrenten. ThinkPHP braucht einen Weg der unabhängigen Innovation, aber es ist eine sehr peinliche Sache über Symfony? Das CI-Framework (CodeIgniter) hat sich in vielen globalen Rankings völlig unabhängig entwickelt. In China sieht man jedoch den Schatten von ThinkPHP Seltsames Phänomen. Da es sich bei ThinkPHP um ein vollständig lokales Produkt handelt, sind sogar die Anmerkungsdokumente auf Chinesisch. Auf dieser Grundlage wählt dieser Artikel ThinkPHP als Ausgangspunkt für die Untersuchung des Status chinesischer und ausländischer Software.

Was ist ein gutes System? Was brauchen wir?

Wie das Sprichwort sagt: Wenn Sie Ihre Arbeit gut machen wollen, müssen Sie zuerst Ihre Werkzeuge schärfen. Hier sind ein paar Punkte, um zu erklären, welche Eigenschaften ein hervorragendes System haben sollte:

Vollständigkeit:

Die sogenannte Vollständigkeit kann man sich als ein Tool oder eine Komponente vorstellen, die unter Berücksichtigung aller Situationen entwickelt wurde. Beispielsweise schneidet die von PHP nativ bereitgestellte String-Interception-Funktion UTF-8-Zeichen ab und erzeugt verstümmelte Zeichen, und das haben Sie auch Wenn Sie eine Abfangfunktion entwickelt haben, wird dies nicht nur der Fall sein, sondern es wird auch berücksichtigt, dass Tags in HTML nicht abgeschnitten werden. Dann ist Ihr Tool vollständiger als die native PHP-Funktion Wenn Sie feststellen, dass es Spalten gibt, die nicht erfüllt werden können, müssen Sie sie verbessern, um die Vollständigkeit zu verbessern. Obwohl Drupal weiterhin erforscht und weiterentwickelt wird, übertrifft dieser Grad der Vollständigkeit bei weitem Beispielsweise kann das Routing-System von Drupal natürlich basierend auf Domänennamen, Protokoll, HTTP-Methode, Datenformaten, Optionen usw. unterstützen, und es gibt eine Prioritätsklassifizierung, wenn diese alle in ThinkPHP verfügbar sind Die Vollständigkeit dieses Komponentendesigns hängt von der Tiefe des Verständnisses der Art der Transaktion und einer großen Menge an Entwicklungserfahrung ab. Es ermöglicht den Menschen, auf den Grundlagen derjenigen aufzubauen, die zuvor kamen.

Standardisierung:

Standardisierung ist die Voraussetzung für eine groß angelegte Zusammenarbeit. Systemhierarchische Struktur, systemübergreifende Kommunikation, entkoppelte Komponenten usw. sind untrennbar mit der Standardisierung verbunden und nicht auf ein eigenes System In Kommentaren oder Diskussionen werden oft Verweise auf RFC-Dokumente gesehen, die den für Produkte üblichen nationalen Standards ähneln.

Integrität:

Kooperative Arbeitsteilung Wenn die entwickelten Komponenten zusammengefügt werden und jeder sie nutzt, muss das Rad nicht selbst neu erfunden werden und die Integrität wird wiederum gefördert Verbesserung der Vollständigkeit. Symfony und Drupal lösen das Integritätsproblem in Form von Komponenten und Modulen.

Geringe Kopplung:

Die Komponenten des Systemdesigns müssen so weit wie möglich entkoppelt werden, um jeder Komponente mehr Raum für Entwicklung und Verbesserung zu geben, und schlechte Komponenten können auch leicht ersetzt werden Design zum Verbinden Der Kern ist modular aufgebaut, ohne ihn direkt zu ändern, um unzureichende Funktionen zu vermeiden und Upgrades zu verhindern. ThinkPHP ist relativ eng gekoppelt.

Beherrschen Sie die Grenzen:

Ein gutes System muss unbedingt ein System mit angemessener Kontrolle sein, aber das ist wirklich etwas schwierig, und wohlwollende Menschen haben unterschiedliche Meinungen. Im Allgemeinen muss die allgemeine Richtung oder das Rückgratsystem so sein Einfach. Hier sind einige Beispiele. ThinkPHP unterstützt beispielsweise die Bestimmung von Routing-Controllern basierend auf Routing-Parametern, das heißt: Route::get(':action/blog/:id', 'Blog/:action');, Drupal jedoch Wenn dies nicht möglich ist, erfolgt die Implementierung ähnlich wie bei Proxy-Controllern. Kurz gesagt, der Effekt sollte nicht auf der Routing-Ebene, sondern auf der Controller-Ebene implementiert werden. Dies macht das Routing-System prägnanter und die Systemarchitektur klarer Die Idee läuft über Drupal, wodurch das Rückgrat des Drupal-Systems sehr einfach und sauber ist. Wenn Sie eine detaillierte Funktion wünschen, geben Sie zuerst den entsprechenden großen Nebenfluss ein und geben Sie dann verschiedene detaillierte Nebenflüsse ein. Aber welchen Weg bevorzugen Sie?

Einfachheit:

Um einfach zu sein, muss das System über klare Prozesse, einheitliche Aufrufe und konsistente Regeln verfügen. Der Vorteil davon ist, dass es einfach ist Neulinge können lernen und es ist sehr bequem zu verfolgen und Fehler zu beheben.

Vitalität:

Die Vitalität des Systems liegt auch in der Nachhaltigkeit. Das Ökosystem und die Entwickler sind die Nahrung des Systems. Wir werden weiter unten darüber sprechen, aber wir werden es hier überspringen.

Vergleich zwischen ThinkPHP und Drupal:

Im Allgemeinen weist ThinkPHP eine unzureichende Abstraktion und unzureichende Akkumulation auf. Dies ist wie bei einem Kind, während Drupal eines ist, das jahrelange Erfahrungen gemacht hat . Erwachsene wissen mehr, kennen die allgemeinen Prinzipien dahinter und gehen weiter. Angenommen, wir bauen ein Gebäude wie Beton, Ziegel, Stahlstangen usw. Entwickler müssen erforschen, wie man baut und wie man es entwirft und andere architektonische Fragen, und Drupal stellt nicht nur grundlegende Materialien zur Verfügung, sondern verfügt auch über ein Bauteam und ein Designinstitut. In vielen Fällen müssen Sie nur sagen, welche Art von Gefühl und Funktion das Gebäude haben soll (was Ihnen begegnet). Wenn Sie Interesse daran haben, können Sie sich natürlich auch am Bauprozess beteiligen, um Ihre individuellen Ergebnisse zu erhalten.

In diesem Kapitel werden die beiden auf der Ebene der technischen Architektur verglichen. Wenn Sie kein Entwickler sind oder sich nicht für bestimmte Technologien interessieren, können Sie dieses Kapitel direkt überspringen und mit dem nächsten Kapitel fortfahren. Hier finden Sie die neuesten Versionen von ThinkPHP 6.0 .7 und Drupal 9.1.7 wählen aus Platzgründen nur einige wichtige Inhalte zum Vergleich aus:

Ereignisse:

In ThinkPHP sind Ereignisse so positioniert, dass sie das ursprüngliche Verhalten und den Hook-Mechanismus ersetzen. Es ist ersichtlich, dass der Autor den wesentlichen Unterschied zwischen Ereignissen und Hooks nicht erkennt. Derselbe Punkt ist, dass Code von Drittanbietern verwendet wird, um in den Strom einzugreifen Logikverarbeitung, aber unter dieser allgemeinen Prämisse konzentrieren sich Hooks auf die Teilnahme und Ereignisse auf Benachrichtigungen. Sie sind in Menge und Art sehr unterschiedlich, während Drupal sie aufgrund des unzureichenden Verständnisses von ThinkPHP wesentlicher versteht. „Ereignisse“ führt auch zu Implementierungsproblemen. Es ist locker und komplex und weist große funktionale Mängel auf. Beispielsweise haben ThinkPHP-Ereignisse kein Prioritätskonzept, was bei Auftragsanforderungen von entscheidender Bedeutung ist. Gleichzeitig gibt es kein Ereignis Der Ausbreitungsbeendigungsmechanismus erfordert beispielsweise keine Implementierung von Ereignisklassen. Um Ereignisse zu verarbeiten, müssen normalerweise Parameter übergeben werden, und die Verarbeitungsergebnisse müssen an die Quelle des Ereignisses, also an die Ereignisklasse, zurückgegeben werden ist notwendig. ThinkPHP ist sehr einfach, und Drupal verwendet den Event-Dispatcher-Dienst, um alle Ereignisse zu verarbeiten, was für Abonnenten sehr wichtig ist. Es gibt keine besonderen Einschränkungen für Listener Stellen Sie sich dem Event-Dispatcher-Dienst gegenüber. Im ThinkPHP-Dokument wird beispielsweise erwähnt, dass Middleware hauptsächlich zum Abfangen oder Filtern von HTTP-Anforderungen von Anwendungen verwendet wird. Dies ist auch bei der Weiterleitung von Anforderungsereignissen der Fall und entspricht Routing-Ereignissen und Controller-Ereignissen Die Hauptfunktion der Middleware in Drupal besteht darin, den HTTP-Verarbeitungskern von einem auf mehrere zu ändern. Die logische Architektur von Drupal ist viel eleganter und klarer als die von ThinkPHP. Dies liegt auch daran, dass ThinkPHP den Ereignismechanismus nicht ausreichend versteht Die Systemstruktur ist chaotisch und belastet zukünftige Upgrades.

Eintragsdatei:

Zwei Die Eintragsdateien beider Benutzer sind sehr einfach und die Logik ist relativ ähnlich:

1 Das Anforderungsobjekt wird in den Verarbeitungskern in der Eintragsdatei übertragen und verkörpert wörtlich „Jedes Websystem wandelt Anforderungen in um“ Das Konzept eines „responsiven Systems“, und obwohl die Ausführungsmethode des HTTP-Dienstes von ThinkPHP ebenfalls verfügbar ist, wird sie am Eingang nicht widergespiegelt. Es gibt jedoch keinen wesentlichen Unterschied. Der große Unterschied besteht darin, dass ThinkPHP die Funktion „Unteranfrage“ nicht unterstützt, d Diese Funktion hat einen großen Einfluss auf die Systemarchitektur (im gesamten System hat sie keinen Einfluss auf den Umgebungsstatus der Hauptanforderung, und Unteranforderungen müssen auch die Leistung berücksichtigen). Dieser Punkt kann am besten sein Aufgrund der Tatsache, dass die Systemarchitektur von Drupal viel leistungsfähiger und vollständiger ist als die von ThinkPHP, ist Drupal in der Lage, komplexe Geschäftslogiken besser zu verarbeiten. Egal, ob es sich um mehrere Anwendungen handelt oder nicht und Backend einer einzelnen Anwendung gibt es zwar nur einen Eingang, mehrere werden jedoch nicht empfohlen. Dies verringert die Komplexität, hält es einfach und legt den Grundstein für das URL-Alias-System, und ThinkPHP verfügt über einen komplexen Mechanismus mit mehreren Einträgen Insbesondere in Multianwendungen wird es auch schwierig sein, URL-Aliase zu unterstützen. 3 Drupal übergibt den Klassenlader im Ausgangszustand an den Verarbeitungskern, was natürlich das Ersetzen oder Ändern von Klassen unterstützt, ThinkPHP unterstützt dies jedoch nicht Wenn Sie den Klassenlader nur ändern müssen, kann dies zu einem großen Verlust an Flexibilität führen Die Klasse „thinkHttp“ ist problematischer.

Mehrere Anwendungen:

Beide unterstützen Multianwendungen, d. h. mehrere Systeme verwenden denselben Codesatz wieder, aber Drupal ist in Bezug auf bestimmte Methoden viel einfacher.

Schnittstellenorientierte Programmierung:

Viele Implementierungen In ThinkPHP werden keine Schnittstellen aus den Klassen extrahiert, und selbst einige wichtige Klassen haben keine Schnittstellen, wie zum Beispiel:

thinkApp

thinkRequestSie sind so kernig und wichtig, aber sie haben keine eigenen unabhängigen Schnittstellen Wenn ich beispielsweise meine eigene App-Klasse implementieren möchte, um thinkApp zu ersetzen, kann ich nur den Kern ändern, was jedes Mal ein Problem darstellt Ich aktualisiere jedoch die Schnittstelle strikt und die Architektur ist vollständig. Bei Schnittstellen sind alle Parametertypbeschränkungen Schnittstellen. Wir können jede vom Kern bereitgestellte Klasse ersetzen, einschließlich der wichtigsten HTTP-Kernklasse : DrupalKernel, das der App-Klasse von ThinkPHP ähnelt.

Neben der Beeinträchtigung der Skalierbarkeit hat die Nichtbefolgung der Schnittstellenprogrammierung auch viele andere Nachteile, z. B. Unfreundlichkeit gegenüber IDEs, schwierig zu automatisierende Dokumentenextraktion, Codekommentare ohne Vererbung, unbequeme gemeinsame Diskussionen usw.

Routing-System:

Zitat des Originalsatzes aus dem offiziellen ThinkPHP-Tutorial:

„ThinkPHP ist nicht gezwungen, Routing zu verwenden. Wenn kein Routing definiert ist, können Sie direkt über die Methode „Controller/Operation“ darauf zugreifen.“

Es ist zu sehen dass es dem Autor des Frameworks an Verständnis für die Art des Routings mangelt, wie oben erwähnt. Nummer 1 wurde noch nicht abstrahiert. Die sogenannte „Controller/Operation“-Methode sollte ebenfalls zum Standard-Routing oder zum internen Pfad-Routing gehören und nicht zu keinem Routing. Dieser scheinbar harmlose Punkt ist tatsächlich sehr wichtig, da er wesentliche Erkenntnisse beinhaltet und dann zu sehr unterschiedlichem Verhalten führt.

Routing ist eine Weggabelung nach dem Betreten des Systems. Hier müssen viele Geschäftslogiken verarbeitet werden, z. B. Berechtigungssteuerung, Parameterkonvertierung, Pfad-Alias-Verarbeitung, Sprachverarbeitung usw. In ThinkPHP wird dies berücksichtigt Es kann kein Routing geben, was dazu führt Darüber hinaus führen solche kognitiven Ergebnisse unweigerlich dazu, dass die Dinge locker und kompliziert werden, wie z. B. Code-Redundanz, inkonsistente Verwendung usw.

Die Eingabeverarbeitung ist nur eine der beiden Hauptfunktionen des Routings. Die andere wichtige Funktion ist die Generierung systemweiter URLs. Dies ist für die URL-Aliasverarbeitung, Sprachaushandlung, SEO usw. von entscheidender Bedeutung Es gibt nur einfache Funktionen in ThinkPHP. Die Implementierung des Routing-Systems hat die Verantwortung des Routing-Systems noch nicht vollständig erkannt. Hier wird beispielsweise eine Anforderung gestellt:

Wie kann der Benutzer „target="_blank"“ hinzufügen? URL des gesamten Systems in einer benutzerdefinierten Funktion?

Container- und Abhängigkeitsinjektion:

Dieses Konzept und dieser Name stammen aus dem Symfony-Framework. Weitere Informationen finden Sie unter:

https://symfony.com/doc/current/components/dependency_injection.html

Kurz gesagt Die Hauptidee besteht darin, ein zentrales großes Objekt im System einzurichten, das auch als übergeordnetes Objekt bezeichnet werden kann. Es ist für das Sammeln, Speichern und automatische Instanziieren unserer häufig verwendeten Objekte verantwortlich. In Symfony wird dieses große Objekt als Container bezeichnet. und die darin gespeicherten Objekte werden als Dienste bezeichnet. Die Definition des Dienstes kann statisch in YAML oder dynamisch im Dienstanbietermodus bereitgestellt werden. Die „Definition“ hat ein bestimmtes Format Das Dienstobjekt wird gemäß der Definition gespeichert und anschließend gespeichert und zurückgegeben. Die Definition wird ausgeführt. Dazu gehören Konzepte wie Klassen, Parameter, Factory-Methoden, Rückrufe nach der Instanziierung, Konfiguratoren, öffentliche und private Eigenschaften, Funktionsvererbung, verzögerte Instanziierung usw. Vor der Bildung des Containers wird außerdem ein Dienstkompilierungsprozess durchgeführt, um erweiterte Funktionen wie Dienstgruppen und Parameteränderungen zu verarbeiten. Jeder Dienst im Container verfügt über eine ID, die als Dienst-ID bezeichnet wird, und das Dienstobjekt wird über diese ID abgerufen Zusätzlich zum Speichern des Dienstes werden im Container auch Containerparameter, Dienstaliase usw. gespeichert.

Das Containerkonzept von ThinkPHP weist den Schatten von Symfony auf, ist jedoch noch sehr jung und elementar. Die Implementierung ist alles andere als einfach und verwirrend. Beispielsweise gibt es kein klares Konzept für die Service-ID und das Serviceobjekt im Symfony-Container muss über eine entsprechende Service-ID verfügen, und ThinkPHP ruft eine ähnliche Konzeptzusammenfassung auf, die ein Bezeichner oder ein Klassenname sein kann, aber einige Containermethoden verwenden sie als Klassennamen, wie zum Beispiel:

thinkApp::register

thinkApp:: getService

Es scheint, dass der Autor so flexibel wie möglich sein möchte, aber dies führt zu Verwirrung aufgrund von Inkonsistenzen. In ThinkPHP gibt es eine separate Definition (ein bisschen wie Betriebssystemdienste), aber im Wesentlichen Es handelt sich immer noch um einen Symfony-Dienst, der nur für die spezielle Verarbeitung erforderlich ist. In Symfony wird das Einfügen von Diensten in Container als „Sammeln“ von Diensten oder „Injizieren“ von Diensten in den Container als „Binden“ von Diensten an den Container bezeichnet . Wie der Name schon sagt, werden Behälter zur Aufbewahrung von Dingen verwendet. Warum wird es Bindung genannt? Diese Art von Namen ist sehr schwer auszusprechen, und es gibt viele Namen, die die Bedeutung nicht vermitteln. Wenn beispielsweise die Post-Instanziierungsoperation des Objekts im Container ausgeführt wird, nennt ThinkPHP sie eine „Post-Ausführungs“-Operation. Kein „Post-Instanziierungs“-Vorgang. In der Computerbranche gibt es ein bekanntes Sprichwort: „Was ist schwierig? In diesem Bereich muss ThinkPHP verbessert werden.“ .

Darüber hinaus können Dienste (in ThinkPHP als an den Container gebundene Klassen, Objekte oder Rückrufe bezeichnet) auch Dienste an den Container binden. Diese Funktion scheint flexibel zu sein, ist jedoch für die Codeverfolgung und das Debuggen sehr unfreundlich und fügt neue Personen hinzu. Es ist schwierig, das System zu übernehmen, und Drupal profitiert von seinem modularen Aufbau, der eine zentralisierte Deklaration ermöglicht (da das Modul wissen muss, von welchen Diensten der Dienst abhängt, und über den Container-Kompilierungsmechanismus auch feststellen kann, ob ein bestimmter Dienst vorhanden ist). , damit das Verfolgen des Codes und das Debuggen so einfach wie möglich ist und es auch sehr praktisch ist, die Dienstdefinition in den Laufzeitcontainer zu exportieren, ohne jeden Dienst tatsächlich zu instanziieren.

Fassade:

Dies ist nur ein Konzept in ThinkPHP, mit dem die dynamische Methode der gepackten Klasse statisch aufgerufen wird, dh die statische Methode wird verwendet, um die Klasse auf die Methodenebene zu übertragen. Dies ist nur eine Formale Anpassungen und interne Instanzen sind weiterhin erforderlich. Tatsächlich ist dieses Konzept nicht nur sehr unfreundlich für IDEs, sondern verstößt auch gegen die ursprüngliche Absicht des statischen Methodendesigns von PHP Mangel an Containerfunktionen in ThinkPHP. In Drupal gibt es kein solches Konzept, und sein funktionaler Zweck besteht darin, die statische Methode Drupal::service($id) einheitlich zu übernehmen, und dann kann der Entwickler ihre dynamische Methode selbst aufrufen Wenn eine andere Instanz benötigt wird, kann er diese selbst klonen. Dies vermeidet auch den Aufwand, eine Proxy-Klasse einzuführen.

Hilfsfunktion

Es gibt ein Konzept einer Hilfsfunktion in ThinkPHP. Das Dokument erwähnt, dass ihr Zweck darin besteht, den Komfort automatischer Erinnerungen aus der IDE zu nutzen. Dies entspricht den statischen Methoden oder Verknüpfungsfunktionen, die von bereitgestellt werden „Drupal“ ist eine globale Klasse in Drupal, aber nicht wegen der IDE, sondern weil es bequemer ist, Dienste zu erhalten, weil PHP-Funktionen oder statische Klassenmethoden superglobal verfügbar sind.

Controller und Modelle:

In ThinkPHP wird davon ausgegangen, dass der Controller eine PHP-Klasse oder einen Abschluss darstellt. Tatsächlich ist dies eine sehr starre und dogmatische Angelegenheit Erstens kann der Controller PHP-Rückrufe in beliebiger Form darstellen, einschließlich Funktionen, Container-Instanzmethoden (definiert mit Container-IDs) usw. Zweitens sind die Grenzen der Geschäftslogik in Wirklichkeit nicht so klar, und das ist auch der Fall Es ist schwierig, das „Muster“ zu abstrahieren und dann den Namen anzugeben. Auch hier sollte der Controller bereits der Anfang der Geschäftsverarbeitung sein, und was der Controller im ThinkPHP-Konzept tut, sollte dies im Routing bereits erkannt und erwähnt haben das Dokument.

Mehrsprachige Verarbeitung:

In Bezug auf die Implementierung basieren sowohl ThinkPHP als auch Drupal auf Englisch als Entwicklungsmetasprache. Die Übersetzungsimplementierung von ThinkPHP ist sehr einfach und kann den Anforderungen in der Realität oft nicht gerecht werden, insbesondere bei der internationalen Entwicklung Anwendungen (dies dürfte auf eine unzureichende Abdeckung des Anwendungsbereichs zurückzuführen sein). Drupal verfügt über ein vollständiges mehrsprachiges System und hat sich vollständig mit den folgenden Konzepten befasst:

Sprachprobleme im Singular und im Plural (einige Sprachen haben mehr als nur Singular und Plural) Kontextprobleme („kann“ wird mit „kann“ oder „Was ist mit „kann“ übersetzt?) Die Übersetzungsschnittstelle, Konfiguration und Inhaltssprachenübersetzungsteam-Übersetzungszusammenarbeitsmechanismus des Textes in JS, die Verarbeitung der linken Textsprache, usw.

ThinkPHP verfügt nicht über diese, es realisiert lediglich die Übersetzung des Textes in der Vorlage und die Ersetzung von Variablen in Anweisungen. Darüber hinaus verfügt Drupal natürlich über mehrere Sprachverhandlungsmechanismen, wie z. B. Benutzereinstellungen, URL-Präfixe und Sitzungsinformationen , Domänennamen, HTTP-Header, Benutzeragenten-IDs usw. und unterstützt die Anpassung des Sprachverhandlungsmechanismus über Plug-Ins. Standardmäßig werden nur URLs, HTTP-Header-Variablen, Cookies und Browser unterstützt Cookies zur Übertragung von Sprachinformationen können bei der Entwicklung internationaler Systeme auf rechtliche Probleme stoßen. In vielen Ländern muss das System Benutzer explizit fragen, ob sie ihre Cookies umfassend verwenden können. Bei der Verwendung von ThinkPHP im Internet müssen Entwickler die meisten Sprachprobleme selbst lösen. Aber tatsächlich ist das Mehrsprachigkeitssystem das gesamte System, das sehr groß und komplex ist. Da es sich bei Drupal um ein international entwickeltes System handelt, ist die Mehrsprachigkeit eines seiner Highlights und es handelt sich hierbei um ein mehrsprachiges System allein könnte ThinkPHP-Entwickler verblüffen.

Caching-System:

Ein vollständiges Caching-System besteht aus drei Elementen: Ablaufzeit, ungültiges Tag und Kontext. Drupal verfügt über eine vollständige Implementierung, während ThinkPHP nur Zeit und Tags implementiert und keinen Kontext implementiert Kontext? Einfach ausgedrückt gibt es an, wem das zwischengespeicherte Objekt gehört und unter welchen Umgebungsbedingungen unter demselben Cache-Schlüssel KEY. Beispielsweise gehören die Berechtigungen des Benutzers, der Anmeldestatus, die Sprache, die IP, die Protokollversion, die Themeninformationen usw. alle zum Cache Derselbe KEY muss unterschiedliche Cache-Objekte unter unterschiedlichen Kontextbedingungen lesen, was für das Systemdesign in großem Maßstab von entscheidender Bedeutung ist. Darüber hinaus erfordert ThinkPHP, dass Entwickler das Cache-Kontextproblem selbst lösen stellt keinen Cache-Zusammenführungsmechanismus bereit. Dadurch wird keine hierarchische Cache-Verarbeitung ermöglicht, die für ein effizientes Caching unerlässlich ist.

Sitzung:

Entwickler, die ThinkPHP verwenden, müssen sitzungsbezogene Probleme selbst lösen. Mit der heutigen IT-Entwicklung verwenden nur kleine und kleinste Systeme nur einen Server, und die meisten Systeme werden auf mehrere Server verteilt. Daher müssen Anwendungen zustandslos sein, sodass Sitzungsdaten nicht lokal gespeichert werden können Da es sich bei ThinkPHP um ein Framework handelt, das keine bestehende Lösung für die Datenbankspeicherung von Sitzungen bereitstellen kann, müssen Entwickler sich selbst darum kümmern, Dinge wie Lastausgleich und Anwendungszustandslosigkeit zu berücksichtigen und Sitzungen in der Datenbank zu speichern Es kann standardmäßig verwendet werden, obwohl ThinkPHP Erweiterungsfunktionen bietet. Es gibt jedoch ein Problem bei der Implementierung der ThinkPHP-Sitzung: Die Sitzung wird nicht gespeichert, nachdem das Skript beendet ist. Aber innerhalb des Skripts. Wenn der Benutzer „die“ oder „exit“ aufruft, wird die Shutdown-Funktion registriert. Weitere Informationen finden Sie in der PHP-Funktion:

register_shutdown_function

Datenbank:

Sowohl ThinkPHP als auch Drupal Diese Funktion ist in ThinkPHP verfügbar. Drupal hat kein spezielles Rendering-Konzept entwickelt und verwendet nur Geschäftskennungen, um verschiedene Datenbanken zu unterscheiden Die Implementierung ist jedoch viel eleganter. In der Datenstruktur der Datenbank verwendet Drupal beispielsweise den Schlüsselnamen der ersten Ebene ist die Master-Slave-Kennung und ihr Wert ist die Verbindungskonfigurationsinformation. Wenn Sie ein Datenbankladeplanungssubsystem implementieren möchten, ist die Schnittstelle dieser Struktur sehr einfach und in der Konfigurationsdatenstruktur von ThinkPHP enthalten , alle Hostadressen werden unter einem Array-Schlüssel gespeichert, und alle Passwörter werden in einem anderen gespeichert. Unter dem Array-Schlüssel usw. gibt es auch Benutzernamen usw. Eine solche Struktur erfordert nicht nur das erneute Parsen der Konfigurationsinformationen beim Generieren von Verbindungsinformationen Ist das Lesen und Ändern nicht intuitiv, verbraucht es auch die Systemleistung und die Schnittstelle des Datenbanklastplanungssubsystems ist ebenfalls komplexer und sehr unelegant.

Beide unterstützen auch mehrere Datenbanktypen: mysql, pgsql und sqlite. Darüber hinaus implementiert das Community-Modul fast vollständig die Unterstützung für alle häufig verwendeten Datenbanken Die Unterschiede zwischen verschiedenen Datenbanken werden als „Dialekt“ bezeichnet und werden in der Treiberschicht verarbeitet, wodurch eine einheitliche Schnittstelle zur oberen Schicht bereitgestellt wird. Mit anderen Worten: Die Datenbankoperationsklasse der oberen Schicht kann nicht erkennen, welche Datenbank verwendet wird Die unterste Ebene übernimmt die Standard-SQL-Spezifikationen und schirmt so die Unterschiede perfekt ab. Nach der Implementierung der Datenbankentkopplung müssen Modulentwickler nicht mehr berücksichtigen, welche Datenbank der Benutzer beim Wechsel verwendet Zwischen verschiedenen Datenbanktypen auf der Anwendungsebene kann dies mit einem Klick erfolgen.

Da Drupal ein vollständiges System ist, verfügt es standardmäßig über eine Reihe sehr fortschrittlicher Datenspeicherstrukturen. Diese Struktur bietet Unterstützung für die Systemdatenschicht. Wenn alle auf einer einheitlichen Datenstruktur basieren, passieren wunderbare Dinge Dadurch können Menschen auf der ganzen Welt zusammenarbeiten, um umfangreiche Anwendungen auf höherer Ebene zu implementieren. Durch diese Struktur bietet Drupal auch mehr Operationen für Daten, wie z. B. Entitätsabfragen, und Benutzer können es sofort verwenden . Drupal ist inklusive, Benutzer können auch ihre eigenen Datenstrukturen definieren.

ThinkPHP kann die Datenschicht nicht unterstützen, da es sich bei Modellen um sehr frühe und junge Konzepte handelt Das Modell unterstützt keine Feldsteuerelemente für die Eingabe, Formatierer für die Ausgabe, Anzeigesteuerelemente für Formulare und Ansichten usw. Der Grund dafür ist, dass diese eine Implementierung auf höherer Ebene erfordern.

Chinesische und ausländische Open-Source-Ökologie und Verbindungen:

Nach einem vollständigen Vergleich werden Sie verstehen, dass ThinkPHP alles kann, was Drupal kann, und zwar besser, aber nicht umgekehrt, denn Drupal ist ein vollständiger Das als WEB-Betriebssystem bekannte Back-End-System hat dazu beigetragen, dass häufig verwendete Anforderungen grundsätzlich alle sofort verfügbar sind. Wenn ThinkPHP-Entwickler diese Funktionen nutzen möchten, müssen sie einen langen Weg auf der Grundlage von ThinkPHP zurücklegen. Abgesehen von Qualitätsproblemen ist allein der Zeitaufwand eine erstaunliche Zahl (beispielsweise wurden vor der Veröffentlichung der offiziellen Version von Drupal 8 fünf Jahre lang an den verschiedenen Entwicklungsversionen von mehr als tausend internationalen Top-Entwicklern gearbeitet). Viele Drupal-Entwickler machen sich wirklich nicht die Mühe, ThinkPHP oder andere Frameworks zu erlernen, aber in China gibt es ein sehr seltsames Phänomen: Warum gibt es in China immer noch viele kleine Unternehmen, die ThinkPHP verwenden? (Sie können sich einen kleinen Eindruck davon verschaffen, indem Sie auf verschiedenen Rekrutierungsplattformen nach PHP-Rekrutierungsinformationen suchen. Dafür gibt es zwei Gründe:

Der kulturelle Austausch ist blockiert:

Der Austausch in chinesischer und ausländischer Kultur, Leben , usw. Es gibt immer noch eine kleine Anzahl von Menschen, die keine Freunde aus anderen Ländern haben. Der Hauptgrund dafür dürfte die Sprachbarriere sein Das Land entwickelt sich zu schnell. Die Hauptkraft der inländischen Entwickler sind diejenigen, die in den 70er bis 90er Jahren geboren wurden. Die meisten dieser Menschen sprechen schlecht Englisch oder haben oft instinktive Leseschwierigkeiten Greifen Sie nicht auf englische Materialien zu. Das Englischniveau der im Jahr 2000 oder 10 Geborenen ist viel höher (dank der frühen Professoren, des Internets usw.), sie werden in Zukunft glücklicherweise stärker in das internationale Umfeld integriert sein entwickelt, das Niveau der Übersetzungssoftware wird immer höher und immer mehr Menschen widmen sich der Einführung von Technologie. Beispielsweise gibt es in China „Drupal“, „Aima Document Collection“, „Shuidijian“, „. Drupal University“, „Think in Drupal“, „Ninghao.com“ und eine große Anzahl von Technologieplattformen. Diese Plattformen oder Blogs bieten eine große Menge nahezu vollständiger chinesischer Dokumente und beseitigen Sprachbarrieren. In Städten wie Peking, Shanghai, Guangzhou, Chengdu, Nanning und Ningbo gibt es Entwicklungsunternehmen mit Drupal als Kerntechnologie.

Fast-Food-Phänomen durch Stress:

Chinesen gehören definitiv zu den fleißigsten Menschen der Welt. Wohnen, Heiraten, medizinische Versorgung, Bildung und Altenpflege sind ein großer Berg Für die meisten gewöhnlichen Menschen ist die Aufrechterhaltung von Einfallsreichtum und langfristiger Akkumulation zu riskant, und ihnen fehlt das Gefühl der Sicherheit. Wer weiß, was in Zukunft passieren wird Zukunft, wenn sich die Gesellschaft so schnell entwickelt? Dieses Phänomen hat große Auswirkungen auf das Fundament unseres Landes. Der Schaden im wissenschaftlichen Bereich ist enorm, und das Gleiche gilt für die sich schnell entwickelnde IT-Branche 996 wird sogar von großen Unternehmen gelobt. Viele Entwickler haben einfach nicht viel Zeit zum Lernen Freundin. Ich habe sehr wenig Zeit zum Ausruhen, daher ist es noch schwieriger, intensiv zu lernen, ich nutze sie normalerweise, um private Arbeiten zu übernehmen und zusätzliches Geld zu verdienen. In diesem Fall ist jeder daran gewöhnt. Fast Food essen". Wenn sie eine Hacke haben, benutzen sie sie zuerst. Sie haben keine Zeit, Bagger zu lernen. Es ist noch teurer, Bagger zu entwickeln. Letztendlich erschwert es die Entwicklung der Open-Source-Industrie meines Landes. Es gibt nur wenige Open-Source-Projekte mit einem starken kommerziellen Charakter. Kleine Unternehmen sind auf Werbesubventionen und Open-Source-Projekte angewiesen, um kommerzielle Projekte anzuziehen und Gewinne zu erzielen (Sie können dies spüren, wenn Sie sich die Homepage von ThinkPHP ansehen), während große Unternehmen sich dafür entscheiden Es dient dazu, Reservetalente zu kultivieren, Fehler kostenlos zu beseitigen usw. Open Source hat einen starken Einflussbereich. Im Allgemeinen machen reine Liebe und Interesse einen geringen Anteil aus, aber dies sollte nicht den chinesischen Entwicklern angelastet werden Dies ist auf den starken Druck in der Umgebung zurückzuführen, und um dem Phänomen der Städte der ersten Reihe zu entkommen, ziehen viele Menschen in Städte der zweiten Reihe, die weniger beschäftigt sind und etwas Freizeit haben Open Source (Luoji Thinking) prognostiziert auch, dass Chinas Innovationszentren in zweitrangige Städte verlagert werden könnten.

Im Gegenteil, der Boden für internationales Open Source ist viel besser und wird von vielen entwickelten Ländern dominiert. Im Vergleich zum Druck gibt es viel Spielraum für Menschen, die darauf basieren Die erste Überlegung vieler Menschen, die sich mit Open Source befassen, ist, dass Leser etwas über den Sinn des Lebens erfahren können. Es gibt ein „Gefällt mir“-Modell, das „Qualität“ garantiert, und Vorteile, die es Entwicklern ermöglichen, das Alter zu ignorieren Auf der jährlichen DrupalCon-Konferenz konnte ich sehen, dass viele Entwickler sehr alt sind, viele in ihren 50ern und 60ern. Sie sprachen mit leuchtenden Augen über Technologie und steckten ihre Lebensersparnisse in Drupal.

Natürlich nehmen auch die entwickelten Länder nicht hauptsächlich an internationalen Open-Source-Projekten teil. Ein typisches Land ist Indien Es gab eine starke Polarisierung, als die Briten das Land kolonisierten, und die Beliebtheit der englischen Sprache bei seinen High-End-Leuten ist sehr hoch. Dies hat zu einer starken Integration Indiens in internationale Open Source geführt und dementsprechend zu Indiens relativ hoher Stärke in der Softwareentwicklung geführt.

Karriereplanung für Entwickler:

In diesem Abschnitt wird die Frage der Karriereplanung inländischer Entwickler erörtert. In der heimischen Gesellschaft gab es schon immer eine Stimme: „Programmierer essen Jugendnahrung“, was normalerweise dem Alter von 35 Jahren entspricht. Es kommt häufig vor, dass bestimmte große Unternehmen 35-jährige Entwickler entlassen. Es ist seltsam, dass 35-Jährige über umfassendere Fähigkeiten verfügen und mit vielen Dingen angemessen umgehen können Phänomen auftreten? Lassen Sie uns untersuchen:

Zuallererst stehen diese Nachrichten im Verdacht, Aufmerksamkeit zu erregen, genau wie „weibliche Fahrer“. Tatsächlich ist die Unfallrate von weiblichen Fahrern geringer als die von männlichen Fahrern Sie sind Nachrichten und können die Leute dazu bringen, zu stöbern, aber wenn es zu viele Nachrichten wie diese gibt, entsteht eine Illusion. Daher wurde die 35-Jährigen-Grenze in gewissem Maße übertrieben, was negative Auswirkungen hatte. und manche Leute folgen dem Trend sogar ohne Grund.

Aber in der 35-Jährigen-Grenze steckt etwas Wahres. Dies muss selektiv unterschieden werden. Wenn ein Entwickler einfache und sich wiederholende manuelle Arbeiten wie CURD (ein echter Programmierer) ausgeführt hat, dann ist dies der Fall, wenn er 35 Jahre alt ist. Er wird anders sein als jemand, der gerade die Schule verlassen hat. Man kann sich vorstellen, dass der Wettbewerb im Alter von 35 Jahren einen großen Druck auf die Schulbildung, die Gesundheit der Eltern und die Unterkunft ausüben wird. usw., was Entwickler dazu zwingt, höhere Gehaltsanforderungen zu stellen. Es gibt auch viele familiäre Angelegenheiten, soziale Interaktionen usw. Normalerweise ist das angesammelte Gehalt für lange Dienstzeit relativ höher Was machen Sie, wen wählt der Chef? Gleichzeitig bringt das Älterwerden einige Gesichtsprobleme mit sich. Wenn Ihr Chef ein junger Mann ist, der viel jünger ist als Sie, sollten Sie ihm dann gehorchen? Für junge Menschen kann es manchmal schwierig sein, mit jemandem umzugehen, der viel älter ist als sie. Anhand dieser lässt sich erkennen, dass das Bestehen der 35-Jährigen-Grenze einen bestimmten Grund hat.

Die Zeit wartet auf niemanden. Wie können Entwickler also die 35-Jahre-Grenze umgehen und wie sollten sie ihr Leben planen?

Wenn Sie feststellen, dass Sie Technologie nicht wirklich mögen, sollten Sie sich so früh wie möglich verändern, während Sie in Ihrem Alter noch wettbewerbsfähig sind, Ihrem Herzen folgen, etwas finden, das Ihnen gefällt, und anfangen, Wettbewerbsfähigkeit aufzubauen.

Wenn Sie Technologie wirklich mögen und bereit sind, Ihr Leben damit zu verbringen, müssen Sie effizient akkumulieren, weiter lernen und stets darauf achten, die technische Lücke zu jungen Menschen zu vergrößern, die weniger Druck und eine starke körperliche Stärke haben. Vorteile müssen durch technische Vorteile ausgeglichen werden. Der Weg zum großen Meister ist nicht etwas, das man wählen kann, sondern ein Muss. Wenn man das Alter von 35 Jahren erreicht, muss man ein großer Meister sein und Systempositionen übernehmen dass junge Menschen schwer zu erfüllen sind.

Ich muss Sie hier daran erinnern, dass mit der Entwicklung der Gesellschaft die Schwelle der Technologie tatsächlich allmählich zunimmt. Sie haben zum Beispiel vielleicht schon von „Full Stack Engineer“ gehört, aber das gehört erst zu den Anfängen des Internetzeitalters . Jetzt ist die gesellschaftliche Arbeitsteilung zu dünn und zu tief. Wenn es sie gäbe, könnte man sie „alles wissen, aber nicht alles“ nennen, weil die Lücke in der Energie der Menschen nicht mehr groß sein wird . Sie entscheiden sich dafür, alles zu studieren, andere entscheiden sich dafür, einen Bereich zu studieren, und der Arbeitgeber basiert darauf Umliegende Bereiche, aber auf diese Weise werden Sie zu einem Bestandteil einer großen Maschine, und Ihre Wahlfreiheit wird eingeschränkt, und die Schwelle zur Unterteilung wird begrenzt. Die Anforderungen werden sehr anspruchsvoll und spezialisiert sein, und Sie werden nur dazu in der Lage sein an der Oberfläche kratzen Wer nicht nach Tiefe strebt, wird eliminiert.

Die Herstellung solcher Maschinenteile ist für Menschen mit unternehmerischen Ambitionen nicht geeignet. Was erwartet sie also, wenn sie ein Unternehmen gründen? Angesichts der Entwicklung der chinesischen Gesellschaft besteht möglicherweise keine Chance, alle gängigen IT-Anforderungen zu erfüllen. Beispielsweise werden Websites durch öffentliche Konten ersetzt, und der kleine Website-Markt wird auch von SaaS-Plattformen besetzt Zum Initialisieren muss nur mit der Maus geklickt werden, und die zeitabhängigen Kosten können sehr gering sein. Aus Sicht des Kunden müssen natürlich zunächst die Kosten anfallen Zu den allgemeinen Anforderungen gehören auch E-Commerce-Systeme, Live-Übertragungssysteme, Content-Zahlungssysteme usw. In Bezug auf die Skalenvorteile sind Weimeng, Youzan, Weiqing und andere sehr gut Gute SaaS-Plattformen, die entwickelt wurden. Was ist mit nicht allgemeinen IT-Anforderungen? Es werden Lösungen in vielen vertikalen Feldern gebildet, und die Spitze des Berges wird erfasst und geteilt, wie z. B. Meituan, Didi, Tubatu, Dingguagua usw. Es ist schwierig für Sie, in ihren Feldern eine Chance zu haben und nur die Zahl übrig zu lassen Es gibt nicht viele Anforderungen, die eine individuelle Anpassung erfordern. Da es sich um eine individuelle Anpassung handelt, müssen die Kunden hohe Anforderungen an die Stärke stellen Unternehmerunternehmen. Wie viele Mitarbeiter haben Sie? Wie groß ist das Büro? Wie lang ist die historische Akkumulation? Wie viele Fälle gibt es? Wie hoch ist das Stammkapital?

Darüber hinaus wird das gleiche Anwendungssystem mit der heutigen Entwicklung der IT viele Formen in Bezug auf Software annehmen. Es erfordert normalerweise eine oder mehrere Apps, kleine Programme, Webseiten usw. und umfasst auch plattformübergreifende (Zu den APPs gehören Android, IOS und die kommenden Miniprogramme Hongmeng, die WeChat, Alipay, Baidu, Douyin usw. umfassen. Obwohl es Tools wie UNIAPP gibt, sind immer noch viele Fähigkeiten erforderlich, wenn Kunden native Anwendungen benötigen, was dazu führt, dass dies erforderlich ist.) Bilden Sie ein Team und Teammitglieder Dazu gehören auch nichttechnische Mitarbeiter wie Verkäufer, Finanzmitarbeiter usw., die alle bestimmte Eintrittsbarrieren bilden. Am Ende werden Sie feststellen, dass die Gründung eines Unternehmens mehr als nur Technologie erfordert, sondern auch Hauptstadt.

Haben Sie vor diesem Hintergrund das Gefühl, dass der Weg schwierig ist? Aber bitte glauben Sie, dass dies nicht nur im IT-Bereich der Fall ist, sondern auch an Orten mit Konkurrenz. Nur Ihr Interesse kann garantieren, wie weit und hoch Sie gehen können, also folgen Sie bitte Ihrem Herzen.

Wenn Sie Ihrem Herzen folgen und sich nach sorgfältiger Überlegung immer noch dafür entscheiden, Technologie zu betreiben und ein großer Meister zu werden, was sollten Sie dann tun? Zunächst müssen Sie sich auf die Akkumulation konzentrieren, insbesondere auf den Schultern von Riesen und auf unbebautes Land stürmen. Sie müssen das vielversprechendste Ökosystem in Ihrer Nische finden, sich ihm anschließen und zum PHP-Entwicklungsframework Xiaobai zurückkehren Das Framework kapselt und stellt nur die erforderlichen Funktionen bereit, aber der Experte ist der Ansicht, dass das Framework eine einheitliche Plattform für die Zusammenarbeit bietet, sodass das Rad nicht neu erfunden werden muss, was im Hinblick auf die wirtschaftlichen Kosten ausreichend ist Kostengünstig und mit der Hilfe aller Kräfte können Sie Ihre Hände frei machen, um Ihr eigenes Geschäft aufzubauen.

Die Einheit der Basisplattform ist sehr wichtig. Nur so können Menschen akkumulieren, vorankommen und Kosten senken. Allerdings gibt es eine interessante Regel bei der Bildung einer einheitlichen Plattform, nämlich, dass es am Ende nur einen gibt als Hauptplattform belassen werden, und dann gibt es eine auf dem zweiten Platz. Um eine wettbewerbsfähige Reserve zu bilden, können der dritte und der vierte Platz grundsätzlich ignoriert werden, und der erste und der zweite Platz werden sehr unterschiedlich groß sein Solche Beispiele gibt es in der Geschichte zu Tausenden, und am Ende gibt es einen großen Unterschied in der Anzahl der Benutzer zwischen den beiden. Dies gilt auch für Android und Apple, Taobao und JD.com, Douyin und Kuaishou, Meituan und Ele.me usw. Sobald sich das Muster gebildet hat, ist es schwierig, Android abzuschütteln, nicht wegen der Technologie, sondern weil der Schneeballeffekt da ist Der König wird stärker und größer, und der Verlierer wird nach und nach einsam werden und verschwinden. Selbst wenn der König einige kleine Fehler macht, wird er sich nicht ändern, zum Beispiel die Tastatur, die wir jetzt verwenden Die vernünftigsten Tastaturen gab es in der Geschichte, aber da jeder an die aktuelle Tastatur gewöhnt ist, muss man sie weiterhin verwenden. Zwei Punkte sind sehr wichtig: Der technologische Fortschritt muss ausreichend sein und die Gemeinschaftsökologie muss einen Schneeballeffekt erzeugen. Diese beiden Punkte ergänzen sich.

Wer wird also diese einheitliche Basisplattform im Bereich PHP-Framework? Die Hauptentwicklungskraft eines Open-Source-Projekts sollte darin bestehen, dass eine große Anzahl von Benutzern es während der Verwendung kontinuierlich verfeinert und zusammenfasst und es dann gemeinsam weiter diskutiert und verbessert, anstatt sich auf ihre eigenen Gedanken oder Erfahrungen zu verlassen in ThinkPHP und Symfony Treffen Sie eine Wahl, die Antwort ist sehr klar Tatsächlich hat Symfony die Bedeutung einer einheitlichen Plattform sehr früh erkannt und sich daher der Einrichtung entkoppelter und vollständiger Basiskomponenten verschrieben und diese wiederholt wiederholt Einige andere bestehende Frameworks verwenden ebenfalls Symfony-Komponenten, wie Laravel und ThinkPHP. Symfony hat immer wieder Wert auf „Standards“ gelegt und ist mittlerweile zu einem De-facto-Standard im Bereich der PHP-Entwicklung geworden, da Standardisierung eine notwendige Voraussetzung für eine einheitliche Plattform ist.

Drupal ist eine übergeordnete einheitliche Standardplattform, die auf Symfony basiert und zur Standardbasis des Gesamtsystems geworden ist. Hier werden fast alle häufig verwendeten Funktionen der Anwendungsschicht bereitgestellt Erstellen Sie basierend auf dem modularen Design zukunftsorientiertere Funktionen und verwirklichen Sie Drupals Ideal, „exzellente digitale Erlebnisse bereitzustellen“.

Technologieauswahl für Entscheidungsträger:

Wenn Sie ein unternehmerischer Chef oder Projektleiter sind, der die Technologieauswahl für ein Projekt trifft, sollten Sie Folgendes beachten:

Kosten kontrollieren:

Das scheint natürlich selbstverständlich zu sein, aber haben Sie wirklich die Kontrolle? Wenn Sie kein Profi sind, ist es schwierig, die Kosten zu kontrollieren:

Wenn Sie im aktuellen Umfeld ein langfristiges Planungsprojekt durchführen und es selbst entwickeln möchten, sollten Sie es nicht auslagern Manche Dinge sehen gleich aus, sind es aber tatsächlich. Der Unterschied zwischen den beiden Systemen in Bezug auf Robustheit, Skalierbarkeit, Sicherheit, Nachhaltigkeit usw. ist für Laien sehr groß Die gleiche Funktion hat eine Last von 5.000 und eine Entwicklungslast von 50 Millionen. Der Aufwand für die Softwaredokumentation ist beispielsweise manchmal viel höher als die Softwareentwicklung selbst. Die Dokumentation ist der Schlüssel zur Sicherstellung der langfristigen Entwicklung des Systems, aber es ist schwierig, eine vollständige Dokumentation beim Outsourcing zu erreichen. Die Qualität des Outsourcings wird Sie in der Zukunft in der Regel dafür bezahlen lassen. Der Grund liegt schließlich nicht darin, dass das Outsourcing-Unternehmen nicht stark ist, sondern in Kostenfragen .

Ohne technische Schulden:

Suchen Sie nicht nach Entwicklern, die nicht genug Erfahrung haben, nur um am Anfang Geld zu sparen: Ein Chef und der technische Direktor hatten Differenzen bei der Talentrekrutierung, und das Technischer Direktor verlangt Das Gehalt für die Stelle beträgt 15.000, aber wenn ein Bewerber kommt, kostet es nur 8.000. Der technische Direktor will es nicht, aber der Chef ist überglücklich und denkt, er hat es verdient, warum sollte er also dummerweise mehr bezahlen? ? Manchmal hinterlassen Anfänger große versteckte Gefahren im System. Das Entwicklungsteam muss bei der Auswahl eines Basissystems über ein tiefes technisches Rückgrat verfügen Dies stellt sicher, dass Sie möglichst keine technischen Schulden haben, sonst werden Sie sich an die Straße gewöhnen und später im Sumpf stecken bleiben, sogar die Götter Ich kann Sie nicht retten

Hebel zur Beschleunigung:

Soziale Entwicklung bis heute Tatsächlich sind viele IT-Systemfunktionen bereits vorhanden und sehr vollständig. Sie müssen sie beispielsweise nicht selbst entwickeln Zwischen ThinkPHP und Drupal werde ich mich ohne zu zögern für Drupal entscheiden, da ThinkPHP nur ein halbfertiges Produkt ist und normalerweise in verschiedenen Anwendungen verwendet wird. Einige Funktionen sind in einem Geschäftssystem erforderlich, z. B. ein Garbage-Collection-System, ein Statussystem und ein Schlüsselwert Speicher, Stapelverarbeitungssystem, System für geplante Aufgaben, Datentypisierungssystem, Ajax-System, Datenanzeige-Engine, Versionsunterstützungssystem, Berechtigungssystem usw. Diese sind in ThinkPHP nicht verfügbar, und Drupal ist sehr vollständig und dauert Monate bis Jahre Diese auf ThinkPHP zu entwickeln, bietet nicht nur nicht die Vorteile der grundlegenden einheitlichen Plattform, sondern ist auch schwierig, die Qualität des selbst entwickelten Codes zu gewährleisten. Es ist eine Verschwendung von Ressourcen und neu Mitglieder müssen in der späteren Phase hohe Schulungsgebühren zahlen. Warum nicht ein fertiges und ausgereiftes System mit vollständiger Grundlage verwenden?

In die Umgebung integrieren:

Das Entwicklungssystem muss in die allgemeine Umgebung integriert werden, es kommt auch auf die Akquise von Reservetalenten an, um nicht genügend Entwickler zu finden, um schnell beizutreten, wenn bestehende Entwickler ausscheiden oder sind unzureichend. Das Projekt ist in die größere Umgebung integriert und die Entkopplung der Entwickler gewährleistet weitgehend die Entwicklungssicherheit des Projekts.

Nationale Open-Source-Empfehlungen:

In diesem Abschnitt stellen wir uns auf die nationale Ebene und schauen uns an, wie Open Source von Tag zu Tag stärker werden sollte Wenn China also die Vereinigten Staaten übertreffen will, um Blockade zu machen und Transzendenz zu erreichen, müssen Sie sich an internationalen Open Source beteiligen und zum Hauptbeitragszahler werden, anstatt selbst ein unabhängiges System aufzubauen (selbst gebaut). Systeme sollten auf neuen Dingen basieren, wie zum Beispiel auf dem Internet der Dinge-Betriebssystem der nächsten Generation (Hongmeng), denn Open Source ist Open Source für die ganze Menschheit, nicht für ein einzelnes Land. Das Arbeiten hinter verschlossenen Türen und das Ausgehen wird China weit davon entfernt machen Sie müssen wissen, dass es in China nur 1,4 Milliarden Menschen gibt, während es auf der Welt mehr als 7 Milliarden Menschen gibt. Daher besteht der rationale Ansatz darin, sich an Open Source zu beteiligen und Beiträge zu leisten Die eine besteht darin, die bestehenden Errungenschaften der menschlichen Entwicklung zu übernehmen und uns auf der Grundlage der Giganten schneller zu entwickeln. Die andere besteht darin, uns dafür zu entscheiden, mit der Mehrheit der Menschen zusammenzuarbeiten, das Land zu öffnen und Einfluss zu gewinnen Leistung.

【Verwandte Tutorial-Empfehlung: Thinkphp Framework

Das obige ist der detaillierte Inhalt vonDrupal vergleicht mit thinkphp, um die inländische Open-Source-Umgebung zu sehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:drupalchina. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen