74 Stimmen

Wie kann ich meine "fortgeschrittenen" PHP-Kenntnisse weiter verbessern? (schnell)

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

Das Problem, das sich mir stellt, ist, dass ich nur dann etwas lerne, wenn ich etwas brauche, was ich vorher nicht gelernt habe. Das führt dazu, dass ich nach Lösungen und anderem Code suche, der das Problem behandelt, und so lerne ich eine neue Funktion oder Struktur kennen, die ich vorher noch nicht gesehen hatte. Auf diese Weise habe ich viele meiner besseren Techniken gelernt (z. B. durch das Studium von Kursen, die von Amazon, Google oder anderen großen Unternehmen herausgegeben werden).

Das Hauptproblem dabei ist das Konzept, dass man etwas nicht lernen kann, wenn man nicht weiß, dass es existiert. Ich habe zum Beispiel mehrere Monate gebraucht, um zu lernen, dass es die empty() Funktion, und ich würde einfach die Länge der Zeichenkette mit strlen() um auf leere Werte zu prüfen.

Ich bin jetzt dabei, immer größere Systeme zu bauen, und ich habe angefangen, Blogs wie highscalability.com zu lesen und mich mit MySQL-Replikation und Serverdaten für die Skalierung zu beschäftigen. 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, stellte sich mir die Frage, ob es da draußen einen Standard oder ein "akzeptiertes System" gibt.

Ich habe mir Frameworks angesehen (ich habe Kohana verwendet, was ich bereut habe, aber ich habe beschlossen, dass PHP-Frameworks nichts für mich sind) und ich ziehe meine eigene Funktionsbibliothek einem Framework vor.

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

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

  • Blogs lesen
  • Tutorials lesen
  • Mit jemand anderem zusammenarbeiten
  • Ein Buch lesen

Was wäre der beste Weg, um "die nächste Stufe" zu erreichen, die Stufe eines sehr guten Systementwicklers?

115voto

Your Common Sense Punkte 154708

Jeder, der ein PHP-Programmierer sein will, nimmt immer nur das erste Wort und ignoriert das zweite völlig.

Programmieren" ist zwar viel wichtiger als "PHP", aber um ein PHP-Profi zu sein, sollte man in erster Linie ein Programmierer sein.

Ich würde also für die letzte Option stimmen - Bücher lesen. Nicht über PHP, sondern über die Programmierung im Allgemeinen. Grady Booch 's, Martin Fowler und sogar die alten Donald Knuth die.
Es wäre auch schön, einen Blick auf andere Sprachen zu werfen, wie Java oder Python. Nicht um zu ihnen zu wechseln, sondern um von ihnen zu lernen.

28voto

Richard JP Le Guen Punkte 27575

Ich bevorzuge meine eigene Bibliothek mit Funktionen als einen Rahmen zu haben

Sie sprechen von einer "Funktionsbibliothek" und einem "Rahmenwerk" als unterschiedliche Konzepte (gut!), warum also nicht versuchen, den Einsatz ein wenig zu erhöhen und diese Funktionsbibliothek in ein Rahmenwerk zu verwandeln? Wohlgemerkt, das ist ein guter Weg, um zu lernen, aber nicht der beste Weg, um vermarktbare Fähigkeiten zu haben ;)

Es ist auch ein guter Weg, um zu lernen falsch Bevor Sie also anfangen, müssen Sie einige Nachforschungen anstellen.

Die "Muss"-Funktionen

Es gibt bestimmte Funktionen, die fast alle Frameworks haben, und dafür gibt es einen Grund. Recherchieren Sie sie; finden Sie heraus warum Sie sind vorhanden und es gibt verschiedene Varianten; wählen Sie aus, welche Implementierungen Sie in Ihren Rahmen aufnehmen möchten.

  • Objektorientiert (dies ist der Schlüssel dazu, warum Sie ein Framework schreiben sollten, anstatt nur Ihre Funktionsbibliothek zu verwenden)
  • Verwendung von Mustern (sehen Sie sich an und fragen Sie sich, warum so viele Frameworks Anwendung Controller im Gegensatz zu Front-Controller ... und gibt es einige Plattformen, die Seiten-Controller ?
  • Grundlegend MVC-Struktur
  • Saubere URLs

Merkmale von Nicht-PHP-Plattformen, die Sie verstehen und nachahmen möchten

Ich habe keine Ahnung, was Sie interessiert, also höre ich hier auf.

Veröffentlichen Sie es!

Dieser Teil ist wichtig, denn Nathan hat Recht : Ihre Arbeit muss von anderen Menschen gesehen, in Frage gestellt, kritisiert und korrigiert werden. Stellen Sie die Lampe nicht unter den Scheffel - sie muss gesehen werden; stellen Sie sie auf Google Code oder Sourceforge oder so etwas, und wenn die Leute sich die Mühe machen, sie ernsthaft anzuschauen, müssen Sie sie auch ernst nehmen; Sie müssen Unit-Tests und Regressionstests pflegen; Sie müssen Versionskontrolle verwenden; Sie müssen sie gut kommentieren, mit einem großen /* header comment */ am Anfang jeder Datei und nützliche Kommentare zur Erstellung von Dokumenten für jede Klasse und jedes Mitglied davon.

Zusammenfassung

Wenn Sie all dies tun, können Sie sich (auf hohem Niveau) mit anderen Plattformen vertraut machen. Als PHP-Entwickler können Sie auf jeden Fall "40" werden. Sie können etwas über Unit-Tests und Regressionstests lernen. Sie können lernen, wie Sie effektiv dokumentieren.

Ihr Framework wird garantiert "idiosynkratisch und wahrscheinlich ätzend" sein, aber Sie können beim Schreiben eine Menge lernen. Denken Sie einfach daran, dass das Framework kein Produkt ist; es ist eine Reise... sozusagen.

18voto

back2dos Punkte 15464
  1. Blick in versteckte Funktionen von PHP et Die vordefinierten Schnittstellen von PHP
  2. Lernen Sie verschiedene Sprachen. Lernen Sie Sprachen, die eine steilere Lernkurve haben als PHP. Jedes Mal, wenn ich auf die Vorteile anderer Sprachen gegenüber PHP hinweise, werde ich des PHP-Bashings beschuldigt, meistens von Leuten, die ganz offensichtlich nie eine andere Hochsprache wirklich beherrscht haben. Aber ich werde das Risiko eingehen. Ich schlage Ruby, Python, Pearl und haXe (als streng typisiertes Gegenstück). Wenn Sie das geschafft haben, versuchen Sie, Ihr neues Wissen auf PHP anzuwenden. Oder entfernen Sie sich einfach von PHP, falls Sie nicht mehr zurückkehren wollen (was ich nicht für unwahrscheinlich halte).
  3. Lernen Sie, mit Kritik umzugehen. Ihre Reaktion auf Nathans Beitrag hat ganz klar gezeigt, dass Sie noch nicht damit umgehen können. Er hat völlig Recht.
    • Wenn ich mir jetzt mein erstes PHP-Framework ansehe, muss ich sagen, dass es ziemlich beschissen war. Damals hielt ich es für großartig (und es ist immer noch besser als eine Menge Produktionscode, den ich bereits im Einsatz gesehen habe). Trotzdem hatte es viele Schwächen. Wenn Sie kein totales Genie sind, werden Ihre ersten Frameworks einfach furchtbar aussehen, wenn Sie ein paar Jahre später auf sie zurückblicken (vorausgesetzt, Sie entwickeln sich weiter).
    • Eigentlich wird jeder Rahmen, den Sie schaffen, mit der Zeit schlechter aussehen (vorausgesetzt, Sie hören nicht auf, sich weiterzuentwickeln). Aus diesem Grund können Sie genauso gut vorhandene Frameworks verwenden und sich mehr auf die Anwendungsentwicklung konzentrieren. Wenn das von Ihnen verwendete Framework Einschränkungen hat, sollten Sie lieber einen Beitrag leisten, als ein weiteres PHP-Framework zu schreiben.
    • Der Zeitpunkt, sich für die Entwicklung eigener Frameworks zu entscheiden (nicht nur zum Spaß/Lernen, sondern für den Einsatz in der Produktion), ist dann gekommen, wenn Ihre Anforderungen das Angebot anderer Frameworks übersteigen, und nicht, wenn Ihnen die Idee, mit einem Framework zu arbeiten, einfach nicht gefällt. Das ist ein häufiger Fehler, den ich selbst gemacht habe. Aber jetzt kann ich sagen, dass ich daraus gelernt habe. Aber wenn Sie um Rat fragen (was ich damals leider nicht getan habe), werden Sie Antworten wie diese erhalten.
    • Man lernt eine Menge, wenn man mit Code arbeitet, den man nicht selbst geschrieben hat. Man übernimmt nicht nur Konzepte, die von Frameworks gefördert werden, in die andere viele Gedanken gesteckt haben, sondern man lernt auch, produktiv und flexibel zu sein, in einem Team zu arbeiten und die Arbeit zu erledigen (und dabei einigermaßen gute Ergebnisse zu erzielen).
    • Ich nehme an, Sie können nicht wirklich glauben, dass Sie besser sind als jedes Team eines PHP-Open-Source-Projekts da draußen, sonst würden Sie fragen. Überwinden Sie das sture, instinktive Bedürfnis, das Rad neu zu erfinden, das jeder junge Entwickler hat, und werden Sie erwachsen, um Probleme anzugehen, die noch niemand in Angriff genommen hat.
  4. Lernen Sie, was der Unterschied zwischen einer Komponentenbibliothek und einem Framework ist. Wenn Sie glauben, dass Sie ein Framework durch "Ihre eigene Funktionsbibliothek" ersetzen können, haben Sie wahrscheinlich nicht verstanden, was der Sinn von Frameworks ist. Werfen Sie einen Blick auf Inversion der Abhängigkeiten , Umkehrung der Steuerschuldnerschaft et Dependency Injection .
  5. Erfahren Sie mehr über Software-Design. Schauen Sie sich OO-Prinzipien an wie SOLID et GRASP .
  6. Probieren Sie verschiedene Paradigmen aus. AOP, funktionale Programmierung. Erweitern Sie Ihre OO-Kenntnisse durch Sprachen mit stärkerer Objektorientierung, wie Ruby, Objective-C oder Smalltalk.
  7. Sehen Sie sich PHP-Frameworks wie Flow3, Symfony, PHP igniter und CakePHP an. 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 in Betracht ziehen. SQL und OOP passen wirklich nicht gut zusammen. Werfen Sie einen Blick auf OODBMS, verschiedene Datenbankabstraktionsschichten, Key-Value-Stores, Dokumentenspeicher wie CouchDB und MongoDB, verteilte Caching-Server wie Memcache usw.

11voto

stagas Punkte 4257

Hier sind einige Gedanken:

  • Probieren Sie verschiedene Dinge aus. Lernen Sie eine neue Sprache. Manchmal wird man durch das Erlernen der anderen Sprache sogar in beiden besser.

  • Tragen Sie zu einem Open-Source-Projekt bei.

  • Hohe Skalierbarkeit und PHP/MySQL sind keine Freunde. Es gibt heute Technologien, die genau dafür entwickelt wurden. node.js und Redis, um nur ein paar zu nennen.

  • Beantworten Sie Fragen in SO. Die Probleme anderer Menschen können dich dazu bringen, über den Tellerrand zu schauen, und du verbesserst dich in dem Prozess, in dem du versuchst, zu helfen, und du tust auch etwas Nettes für jemanden.

  • [werde versuchen, hier hinzuzufügen, wenn mir noch etwas einfällt, ich bin gerade aufgewacht und habe Kaffee getrunken :D ]

3voto

Halil Özgür Punkte 15159

Einfach: es tun . Die Bedürfnisse werden dich zum Lernen bringen. Finden Sie einen Weg, sich an immer fortschrittlicheren Projekten zu beteiligen, seien es kommerzielle oder Open-Source-Projekte. Es gibt keinen anderen Weg, wie Sie wirklich etwas lernen können.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X