Frage Wie kann ich mein "fortgeschrittenes" PHP-Wissen weiter ausbauen? (schnell) [geschlossen]


Ich arbeite seit Jahren mit PHP und habe die Sprache sehr gut verstanden. Ich habe viele fortgeschrittene und nicht so fortschrittliche Systeme entwickelt, die sehr gut funktionieren.

Das Problem, auf das ich stoße, ist, dass ich nur lerne, wenn ich etwas brauche, das ich noch nicht gelernt habe. Das veranlasst mich, Lösungen und anderen Code zu suchen, der das Problem behandelt, und so werde ich etwas über eine neue Funktion oder Struktur lernen, die ich vorher noch nicht gesehen hatte. Auf diese Weise habe ich viele meiner besseren Techniken gelernt (z. B. Kurse von Amazon, Google oder anderen großen Unternehmen).

Das Hauptproblem dabei ist das Konzept, nicht etwas lernen zu können, wenn man nicht weiß, dass es existiert. Zum Beispiel brauchte ich mehrere Monate um zu programmieren empty() Funktion, und ich würde einfach die String-Länge mit überprüfen strlen() um nach leeren Werten zu suchen.

Ich bin jetzt dabei, immer größere Systeme zu bauen, und ich habe begonnen, Blogs wie highscalability.com zu lesen, und habe MySQL-Replikations- und Serverdaten zur Skalierung untersucht. Ich weiß, dass die Struktur Ihres Codes sehr wichtig ist, damit vollständige Systeme funktionieren.

Nachdem ich kürzlich einen Blog über die Struktur von Reddit gelesen hatte, fragte ich mich, ob es da draußen ein paar Standards oder "akzeptierte Systeme" gibt.

Ich habe mich mit Frameworks beschäftigt (ich habe Kohana benutzt, was ich bedauerte, entschied aber, dass PHP-Frameworks nicht für mich geeignet waren) und bevorzuge meine eigene Funktionsbibliothek, anstatt einen Rahmen zu haben.

Meine derzeitige Struktur ist eine Mischung aus WordPress, Kohana und meinem eigenen Wissen.

Die Möglichkeiten, die ich als potenziell nützlich ansehen kann, sind:

  • Lesen Sie Blogs
  • Lesen Sie die Anleitungen
  • Arbeite mit jemand anderem
  • Ein Buch lesen

Was wäre der / die beste (n) Weg (e), um auf die nächste Ebene zu kommen, um ein sehr guter Systementwickler zu sein?


75
2018-06-01 08:43


Ursprung


Antworten:


Jeder, der ein PHP-Programmierer sein möchte, nimmt immer nur das erste Wort und ignoriert das zweite vollständig.

Während "Programmierung" viel wichtiger ist als "PHP", sollte man, um ein PHP-Profi zu sein, in erster Linie ein Programmierer sein.

Also würde ich für den letzten wählen - Bücher lesen. Nicht auf PHP, sondern auf die Programmierung im Allgemeinen. Grady Boochist, Martin Fowler's und sogar das alte Donald KnuthSeins.
Es wäre auch schön, einige andere Sprachen wie Java oder Python zu betrachten. Nicht zu ihnen wechseln, sondern von ihnen lernen.


116



Ich bevorzuge meine eigene Bibliothek von Funktionen   anstatt einen Rahmen zu haben

Sie beziehen sich auf eine 'Bibliothek von Funktionen' und 'ein' Framework 'als unterschiedliche Konzepte (gut!), Also warum nicht versuchen, die Ante ein wenig aufzurüsten und diese Bibliothek von Funktionen in einen Rahmen zu verwandeln? Wohlgemerkt, das ist eine großartige Möglichkeit zu lernen, aber nicht der beste Weg, marktfähige Fähigkeiten zu haben;)

Es ist auch eine gute Art zu lernen falsch bevor du anfängst, musst du etwas recherchieren.

Die "Muss" -Funktionen

Es gibt bestimmte Funktionen, die fast alle Frameworks haben, und dafür gibt es einen Grund. Recherchiere sie; rausfinden Warum sie sind anwesend und was ihre Variationen sind; Wählen Sie, welche Implementierungen Sie lieber in Ihr Framework aufnehmen möchten.

  • Objektorientiert (dies ist der Schlüssel, warum Sie ein Framework schreiben würden, anstatt nur Ihre Bibliothek von Funktionen zu verwenden)
  • Verwendung von Patterns (überprüfen Sie und fragen Sie sich selbst, warum so viele Frameworks verwenden Anwendungscontroller im Gegensatz zu Front Controller... und gibt es einige Plattformen, die verwenden Seitencontroller?
  • Basic MVC-Struktur
  • URLs löschen

Funktionen von Nicht-PHP-Plattformen, die Sie verstehen und emulieren möchten

Ich habe keine Ahnung, was dich interessiert, also höre ich dort auf.

Veröffentliche es!

Dieser Teil ist wichtig, weil Nathan hat Recht: Ihre Arbeit muss von anderen Menschen gesehen, herausgefordert, kritisiert und korrigiert werden. Lass die Lampe nicht unter einem Scheffel liegen - sie muss gesehen werden; setze es auf Google-Code oder sourceforge oder so, und wenn die Leute sich ernsthaft damit beschäftigen, es ernst zu nehmen, musst du es ernst nehmen; Sie müssen Komponententests und Regressionstests durchführen. Sie müssen die Versionskontrolle verwenden; Sie müssen es gut kommentieren, mit einem großen /* header comment */ am Anfang jeder Datei und nützliche doc-Generierung Kommentare für jede Klasse und Mitglied davon.

Zusammenfassung

Wenn Sie all dies tun, können Sie (auf hohem Niveau) über andere Plattformen lernen. Sie können definitiv "ding 40" als PHP-Entwickler. Sie können etwas über Komponententests erfahren; über Regressionstests. Sie können etwas über das Dokumentieren lernen.

Garantiert wird Ihr Framework "idiosynkratisch und wahrscheinlich sucky", aber Sie können viel davon lernen, es zu schreiben. Bedenken Sie, dass der Rahmen kein Produkt ist; es ist eine Reise ... von Art.


28



  1. Einblick in versteckte Funktionen von PHP und Vordefinierte Schnittstellen von PHP
  2. Lerne verschiedene Sprachen. Lerne Sprachen, die eine steilere Lernkurve als PHP haben. Jedes Mal, wenn ich auf die Vorteile anderer Sprachen gegenüber PHP aufmerksam mache, werde ich beschuldigt, PHP-bashing zu betreiben, meistens Leute, die ganz offensichtlich niemals eine andere Hochsprache beherrschen. Aber ich werde das Risiko eingehen. Ich schlage Ruby, Python, Pearl und haXe (als streng typisiertes Gegenstück). Sobald Sie es getan haben, versuchen Sie Ihr neues Wissen auf PHP anzuwenden. Oder geh einfach von PHP weg, falls du nicht zurück gehen willst (was ich nicht für unwahrscheinlich halte).
  3. Lerne, mit Kritik umzugehen. Deine Reaktion auf Nathans Post hat ganz klar gezeigt, dass du damit noch nicht klar kommen kannst. Er hat absolut Recht.
    • Wenn ich nun mein erstes PHP-Framework anschaue, muss ich sagen, dass es ziemlich beschissen war. Zu der Zeit dachte ich, es wäre großartig (und es ist immer noch besser als eine Menge Produktionscode, den ich bereits im Einsatz gesehen habe). Trotzdem hatte es viele Mängel. Wenn Sie kein totales Genie sind, werden Ihre ersten Frameworks schrecklich aussehen, wenn Sie ein paar Jahre später auf sie zurückblicken (vorausgesetzt, Sie entwickeln sich weiter).
    • Tatsächlich wird jedes Framework, das Sie erstellen, im Laufe der Zeit schlechter aussehen (vorausgesetzt, Sie hören nicht auf sich zu entwickeln). Aus diesem Grund können Sie auch verfügbare Frameworks verwenden und sich mehr auf die Anwendungsentwicklung konzentrieren. Wenn das von Ihnen verwendete Framework Einschränkungen aufweist, sollten Sie eher einen Beitrag leisten als ein weiteres PHP-Framework schreiben.
    • Der Zeitpunkt, an dem Sie Ihre eigenen Frameworks schreiben (nicht nur zum Spaß / Lernen, sondern für den produktiven Einsatz), liegt vor, wenn Ihre Anforderungen die anderen Frameworks übertreffen und nicht, wenn Sie einfach nicht die Idee haben, mit einem zu arbeiten. Es ist ein häufiger Fehler, den ich selbst gemacht habe. Aber jetzt kann ich sagen, ich habe daraus gelernt. Aber wenn du um Rat bittest (was ich zu der Zeit leider nicht getan habe), bekommst du Antworten wie diese.
    • Sie lernen viel von der Arbeit mit Code, den Sie nicht selbst geschrieben haben. Sie nehmen nicht nur Konzepte auf, die von Frameworks unterstützt werden, in die andere viel nachdenken, sondern Sie lernen auch, produktiv und flexibel zu sein, in der Lage zu sein, im Team zu arbeiten und die Arbeit zu erledigen (und dabei gute Ergebnisse zu erzielen).
    • Ich nehme an, Sie können nicht wirklich denken, dass Sie besser sind als jedes Team eines PHP-Open-Source-Projekts da draußen, sonst würden Sie fragen. Überstehen Sie den hartnäckigen Instinkt, das Rad eines jungen Entwicklers neu zu erfinden und erwachsen zu werden, um Probleme anzugehen, mit denen sich noch keiner befasst hat.
  4. Erfahren Sie, was der Unterschied zwischen einer Komponentenbibliothek und einem Framework ist. Da Sie denken, Sie können ein Framework durch "Ihre eigene Bibliothek von Funktionen" ersetzen, haben Sie wahrscheinlich nicht verstanden, was der Sinn von Frameworks ist. Schau es dir an Abhängigkeitsinversion, Inversion der Kontrolle und Abhängigkeitsspritze.
  5. Erfahren Sie mehr über Software-Design. Betrachten Sie OO Prinzipien wie SOLIDE und GRIFF.
  6. Probieren Sie verschiedene Paradigmen. AOP, funktionale Programmierung. Verbessere deine OO-Fähigkeiten mit Sprachen mit stärkerer Objektorientierung, wie Ruby, Objective-C oder Smalltalk.
  7. Betrachten Sie PHP-Frameworks wie Flow3, Symfony, PHP-Zünder und CakePHP. Ich habe bereits darauf hingewiesen, warum ich denke, dass Sie das tun sollten.
  8. Wie in einem anderen Kommentar von mir erwähnt, sollten Sie andere Speicher als RDBMs betrachten. SQL und OOP passen wirklich nicht zusammen. Sehen Sie sich OODBMS, verschiedene Datenbank-Abstraktions-Layer, Schlüssel-Wert-Speicher, Dokumentenspeicher wie CouchDB und MongoDB an, verteilen Caching-Server als Memcache usw.

18



Hier sind ein paar Gedanken:

  • Probieren Sie verschiedene Dinge aus. Eine neue Sprache lernen. Manchmal, wenn du diese andere Sprache lernst, macht dich das tatsächlich besser.

  • Beitrag zu einem Open-Source-Projekt.

  • Hohe Skalierbarkeit und PHP / MySQL sind keine Freunde. Es gibt Technologien, die nur dafür gebaut werden. node.js und Redis nennen ein Paar.

  • Beantworte Fragen in SO. Die Probleme anderer Menschen können dazu führen, dass Sie über den Tellerrand schauen, und Sie verbessern den Prozess, um zu helfen, und Sie tun auch etwas Nettes für jemanden.

  • [werde versuchen, hier hinzuzufügen, wenn ich an etwas anderes denke, bin ich gerade aufgewacht, Kaffee zu trinken: D]


11



Lerne, das zu tun, was du bereits weißt ... auf eine andere Art und Weise. Beispiele:

  • in einer anderen Sprache
  • auf einer anderen Plattform
  • parallel / verteilt
  • durch einen Rahmen (ja, du hast entschieden, dass sie "nicht für dich sind" - vielleicht einen anderen ausprobieren, sie sind manchmal sehr unterschiedlich)

3



Vielleicht sollten Sie sich erneut mit Frameworks befassen, ich würde vorschlagen, dass Sie sich das Zend Framework ansehen, weil es mehr wie eine Bibliothek von Komponenten ist, die Sie verwenden können, wie Sie es für richtig halten, und nicht wirklich eine starre Struktur auferlegen, der Sie folgen müssen einige andere Frameworks tun dies), obwohl es ein (ziemlich vernünftig imho) Projekt Layout vorschlagen. Ein guter Ausgangspunkt wäre Das tiefe Ende überleben.

Dinge, die du noch nicht erwähnt hast, und die sich (vor allem in größeren Projekten) als nützlich erweisen könnten:


3



Einfach: TU es. Bedürfnisse werden dich lernen lassen. Finden Sie einen Weg, um sich in immer fortschrittlicheren Projekten zu engagieren, sei es kommerziell oder Open Source. Anders kann man wirklich nichts lernen.


3



Ich würde Diskussionsrunden beitreten und versuchen, die Probleme anderer zu lösen. Manchmal gibt es ziemlich herausfordernde Fragen, die Sie dazu zwingen, etwas zu recherchieren. Wenn du es nicht beantworten kannst, kannst du auf jemanden warten, der etwas lernen kann.

Wie für Frameworks, lernen Sie von ihnen. Ich rolle auch meine eigenen, da die meisten Frameworks da draußen ziemlich langsam sein können. Obwohl schnell genug für die meisten Websites da draußen.

Ich würde auch empfehlen, sich die Facebook-PHP-Bibliothek anzuschauen. Sie machen da ein paar interessante Sachen.


3



Das Beste, was Sie tun können, ist ein Buch zu kaufen effiziente Algorithmen. In jedem Informatik-Studenten-Leben gibt es eine Zeit, die er / sie studiert. Die Probleme, die dort diskutiert / gelöst werden, sind Abstraktionen von fast jedem realen Problem, dem Sie jemals gegenüberstehen.

Außerdem ist es völlig in Ordnung, Blogs darüber zu lesen, wie andere es getan haben, denn es hilft Ihnen zu verstehen, wie Sie die Prinzipien effizienter Algorithmen praktisch anwenden (und vielleicht sogar umsetzen) können.

Grüße.


2