Wie kann ich meine „erweiterte“ PHP-Kenntnisse weiter zu erhöhen? (Schnell) [geschlossen]

StackOverflow https://stackoverflow.com/questions/2948323

  •  05-10-2019
  •  | 
  •  

Frage

Ich habe seit Jahren mit PHP gearbeitet und ein sehr gutes Gespür für die Sprache bekommen, schuf viele erweiterte und nicht-so-fortschrittliche Systeme, die sehr gut funktionieren.

Das Problem, das ich in laufen lasse, ist, dass ich nur lernen, wenn ich ein Bedürfnis nach etwas finden, dass ich vorher nicht gelernt haben. Dies bewirkt, dass mir Lösungen suchen und anderen Code, dass das Problem Griff, und so habe ich über eine neue Funktion oder Struktur erfahren, dass ich vorher nicht gesehen hatte. Es ist auf diese Weise, dass ich viele meine besseren Techniken (wie das Studium Klassen von Amazon löschen, Google oder andere große Unternehmen) gelernt.

Das Hauptproblem dabei ist, das Konzept der nicht in der Lage, etwas zu lernen, wenn Sie nicht wissen, es existiert. So dauerte es mehrere Monate von der Programmierung über die empty() Funktion zu lernen, und ich würde einfach die Stringlänge strlen() mit Check für leere Werte zu überprüfen.

Ich erhalte jetzt in immer größere Systeme bauen, und ich habe angefangen, Blogs wie highscalability.com und erforscht die MySQL-Replikation und Serverdaten für die Skalierung zu lesen. Ich weiß, dass Struktur des Codes sehr wichtig ist voll Systeme Arbeit zu machen.

Nach einem aktuellen Blog über reddit Struktur zu lesen, es machte mich fragen, ob es gibt einige Standard-oder „akzeptiert Systeme“ da draußen.

Ich habe in Frameworks sah (ich habe verwendet Kohana, die ich bedauere, aber entschieden, dass PHP-Frameworks nicht für mich) und ich ziehe meine eigene Bibliothek von Funktionen, anstatt einen Rahmen haben.

Meine derzeitige Struktur ist eine Mischung zwischen Wordpress, Kohana und meinem eigenen Wissen.

Die Möglichkeiten, die ich möglicherweise von Vorteil sehen kann als sind:

  • lesen Blogs
  • lesen Tutorials
  • Arbeit mit jemand anderem
  • Lesen Sie ein Buch

Was ist die beste Art und Weise (n) „erhalten auf die nächste Ebene“ der Ebene des Seins ein sehr gutes System-Entwickler sein würde?

War es hilfreich?

Lösung

Jeder, der will, einen PHP-Programmierer sein, nimmt immer nur das erste Wort und ignoriert vollständig die zweite.

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

Also, würde ich für die letzte Abstimmung - Bücher zu lesen. Nicht auf PHP, sondern auf der Programmierung im Allgemeinen. Grady Booch 's, Martin Fowler 's und sogar die alte Donald Knuth 's diejenigen.
Es wäre auch schön, einen Blick auf einigen anderen Sprachen zu nehmen, wie Java oder Python. Nicht zu Schalter zu ihnen, aber von ihnen zu lernen.

Andere Tipps

Ich ziehe meine eigene Bibliothek von Funktionen anstatt einen Rahmen

mit

beziehen Sie sich auf eine ‚Bibliothek von Funktionen‘ und ‚einen‘ Rahmen‘als unterschiedliche Konzepte (gut!), Warum also nicht versuchen, den Einsatz zu erhöhen und ein wenig drehen, dass die Bibliothek von Funktionen in einem Rahmen? Wohlgemerkt ist dies eine gute Möglichkeit zu lernen, aber nicht der beste Weg, vermarktbare Fähigkeiten zu haben;)

Es ist auch eine gute Möglichkeit, falsch zu lernen, so, bevor Sie beginnen Sie haben einige der Forschung zu tun.

Das "must have" kennzeichnet

Es gibt bestimmte Merkmale, die fast alle Gerüste haben, und es gibt einen Grund dafür. Forschung ihnen; erfahren Sie Warum sie vorhanden sind und was ihre Variationen sind; wählen, welche Implementierungen Sie lieber in Ihrem Rahmen aufzunehmen.

Eigenschaften von Nicht-PHP-Plattformen Sie verstehen wollen, und emulieren

Ich habe keine Ahnung, was Sie interessiert, damit ich aufhören wird.

Veröffentlichen it!

Dieser Teil ist wichtig, weil Nathan richtig ist : Ihre Arbeit zu sehen ist, in Frage gestellt, kritisiert und von anderen Menschen korrigiert. Sie nicht, dass Lampe unter dem Scheffel verlassen - es muss gesehen werden; legt es auf Google Code oder Source oder so etwas, und wenn die Menschen daran stören, werden ernsthaft auf der Suche müssen Sie es ernst nehmen; Sie müssen Unit-Tests und Regressionstests aufrechtzuerhalten; Sie müssen Steuer Verwendung Version; Sie müssen es gut kommentieren, mit einem großen /* header comment */ an der Spitze jeder Datei und nützliche doc-Erzeugung 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 auf jeden Fall „ding 40“ als PHP-Entwickler. Sie können über Unit-Tests erfahren; über Regressionstests. Sie können effektiv zu dokumentieren lernen.

Garantiert Ihr Rahmen wird kommen „idiosynkratischen und wahrscheinlich sucky“, aber man kann viel von Schreiben lernen. Denken Sie auch daran, dass der Rahmen nicht ein Produkt ist; es ist eine Reise ... von Art.

  1. Schauen Sie in versteckten Funktionen von PHP und PHP vordefinierte Schnittstellen
  2. Lernen in verschiedenen Sprachen. Sprachen lernen, die eine steilere Lernkurve als PHP haben. Jedes Mal, wenn ich darauf hinweisen Vorteile anderer Sprachen über PHP, ich von PHP Bashing beschuldigt werde, vor allem Menschen, die ganz offensichtlich nie wirklich eine andere Hochsprache beherrschen. Aber ich werde das Risiko eingehen. Ich schlage vor, Ruby, Python, Perl und haXe (als streng typisierte Gegenstück). Sobald Sie es getan haben, versuchen Sie Ihr neues Wissen zu PHP Anwendung. Oder nur von PHP weg bewegen, falls Sie nicht wollen, gehen Sie zurück (was ich glaube, nicht unwahrscheinlich ist).
  3. Lernen mit critisizm beschäftigen. Ihre Reaktion Beitrag Nathans zeigte ganz klar nicht mit ihm noch umgehen können. Er ist absolut richtig.
    • Ein Blick auf meinem ersten PHP-Framework jetzt, ich muß sagen, dass es ziemlich beschissen war. Zu der Zeit dachte ich, es war großartig (und es ist immer noch besser als eine Menge von Produktionscode, dass ich bereits im Einsatz zu sehen ist). Trotzdem hatte es viele Mängel. Sofern Sie ein echtes Genie, Ihre ersten Gerüste sind werden nur schrecklich aussehen, wenn Sie ein paar Jahre später auf sie zurückblicken (vorausgesetzt, Sie entwickeln).
    • jeder Rahmen Eigentlich erstellen Sie wird schlechter aussehen als die Zeit fortschreitet (vorausgesetzt, Sie entwickeln nicht aufhören). Aus diesem Grund könnten Sie genauso gut verfügbaren Frameworks und mehr auf die Anwendungsentwicklung konzentrieren. Wenn der Rahmen Sie Einschränkungen verwenden hat, sollte einen Beitrag eher als das Schreiben noch einen anderen PHP-Framework.
    • Der Zeitpunkt, Ihre eigenen Rahmen zu wählen, schriftlich (nicht nur zum Spaß / Lernen, sondern auch für Produktionsbereitstellung), wenn Ihre Anforderungen übertreffen, was andere Frameworks da draußen bieten und nicht, wenn Sie gerade nicht wie die Idee der Arbeits mit einer. Es ist ein häufiger Fehler, die ich selbst gemacht habe. Aber jetzt kann ich sagen, ich habe daraus gelernt. Aber wenn man um Rat fragen (die ich leider damals nicht tat) Sie Antworten bekommen wie diese.
    • Sie lernen eine Menge von mit dem Code arbeiten Sie nicht selbst geschrieben hat. Nicht nur holen Sie von Frameworks geförderten Konzepte andere eine Menge Gedanken gemacht, aber Sie auch lernen, produktiv, flexibel, zur Arbeit in einem Team zu sein und die Arbeit zu erledigen (während einigermaßen gute Ergebnisse zu erhalten).
    • Ich nehme an, Sie können nicht wirklich denken, Sie sind besser als jedes Team von einem PHP-Open-Source-Projekt gibt, sonst würden Sie fragen. Holen Sie sich das hartnäckige instinktive Bedürfnis über das Rad ein junger Entwickler hat neu zu erfinden und wachsen, um Probleme anzugehen niemand noch in Angriff genommen hat.
  4. Lernen, was der Unterschied ist zwischen einer Komponentenbibliothek und einem Rahmen. Da Sie denken, können Sie einen Rahmen mit „Ihrer eigenen Bibliothek von Funktionen“ ersetzen, haben Sie wahrscheinlich nicht verstanden, was der Punkt von Frameworks ist. Hier finden Sie aktuelle Abhängigkeit Inversion , Inversion of Control und Dependency Injection .
  5. Erfahren Sie mehr über Software-Design. Blick auf OO Prinzipien wie SOLID und GRASP .
  6. Probieren Sie verschiedene Paradigmen. AOP, funktionale Programmierung. Verbessern Sie Ihre OO Fähigkeiten Sprachen mit stärkerer Objektorientierung, wie Ruby, Objective-C oder Smalltalk mit.
  7. Schauen Sie sich PHP-Frameworks wie Flow3, Symfony, PHP Zünder und CakePHP. Ich habe albereit wies darauf hin, warum ich glaube, Sie sollten dies tun.
  8. Wie bereits in einem anderen Kommentar von mir, sollten Sie andere Speicher als RDBMs betrachten. SQL und OOP nicht wirklich gut zusammen. Werfen Sie einen Blick auf OODBMS, verschiedene Datenbank-Abstraktionsschichten, Schlüssel-Wert-Speicher, Dokumentenspeicher wie CouchDB und MongoDB, vertreibt das Caching-Server als memcache etc.

Hier sind ein paar Gedanken:

  • verschiedene Dinge versuchen. Eine neue Sprache lernen. Einige Male im Prozess, dass andere Sprache zu lernen, macht man eigentlich besser auf beiden.

  • Zu einem Open-Source-Projekt.

  • Hohe Skalierbarkeit und PHP / MySQL sind keine Freunde. Es gibt Technologien heute, die nur für das bauen sind. node.js und Redis ein paar zu nennen.

  • Beantworten Sie die Fragen in SO. Die Probleme anderer Leute können Sie außerhalb der Box denken und Sie verbessern auf den Prozess, um Hilfe zu versuchen, und Sie auch etwas Nettes für jemanden tun.

  • [wird versuchen, hier hinzufügen, wenn ich an etwas anderes denke ich war gerade aufgewacht Kaffee zu trinken: D]

Lernen zu tun, was Sie schon wissen ... in einer anderen Weise. Beispiele:

  • in einer anderen Sprache
  • auf einer anderen Plattform
  • parallel / verteilt
  • durch einen Rahmen (ja, Sie beschlossen, dass sie „nicht für Sie“ - vielleicht versuchen, einen anderen, sie sind manchmal sehr verschieden voneinander sind)

Vielleicht sollten Sie in Frameworks aussehen wieder, ich würde vorschlagen, einen Blick auf das Zend Framework mit, denn es ist mehr wie eine Bibliothek von Komponenten, die Sie verwenden können, wie Sie möchten, ob und stellt keine wirklich eine starre Struktur, die Sie müssen folgen (wie einige andere Frameworks), obwohl es ein (recht vernünftig imho) Projekt-Layout macht vorschlagen. Ein guter Ausgangspunkt wäre Surviving the tiefen Ende .

Dinge, die Sie noch nicht erwähnt, und das könnte als nützlich erweist (in größeren Projekten vor allem) zu wissen:

Ganz einfach: do it . Bedürfnisse werden Sie lernen. Finden Sie einen Weg in immer mehr fortgeschrittenen Projekten zu engagieren, sei es kommerziell oder Open Source. Es gibt keine andere Art und Weise Sie wirklich etwas lernen kann.

würde ich Diskussionsforen teilnehmen und versuchen, andere Menschen Probleme zu lösen. Manchmal gibt es eine ziemliche Herausforderung Fragen, die Sie zwingen, einige der Forschung zu tun. Wenn Sie es nicht beantworten können, können Sie für jemanden warten, der dann etwas lernen kann.

Wie für Gerüste, von ihnen zu lernen. Ich rolle auch meine eigenen, da die meisten der Frameworks da draußen ziemlich langsam sein kann. Obwohl schnell genug für die meisten der Websites gibt.

Ich würde auch empfehlen bei Facebook PHP-Bibliothek suchen. Sie haben einige interessante Sachen drin.

Das Beste, was Sie tun können, ist ein Buch über effiziente Algorithmen kaufen . In jedem Computer des Life-Science-Studenten kommt eine Zeit, er / sie diejenigen zu studieren hat. Die Probleme, die diskutiert werden / gelöst sind Abstraktionen von fast jedem realen Welt Problem, das Sie können je Gesicht.

Neben, dass das Lesen Blogs darüber, wie andere taten es völlig in Ordnung ist, wie es Ihnen hilft zu verstehen, wie praktisch zu verwenden (und vielleicht sogar implementieren) die Prinzipien effizienter Algorithmen.

Viele Grüße.

kann nicht oft genug gesagt werden, etwa mit anderen Entwicklern zu arbeiten. Ich weiß, 3-Entwickler besonders, 2, dass ich die Arbeit mit an einem Tag zu Tag, der ich wegblasen mit ihrem Wissen. Ich bitte ihre Meinung zu allem, was ich tun, nicht weil ich meine eigenen Ideen zweite erraten, aber mehr, dass ich andere Ideen hören wollen, vor allem von Leuten, die ich als Entwickler respektieren. Ich lerne mehr von diesen Leuten als andere Mittel. Wenn Sie keinen Zugang zu anderen leitenden Entwickler haben, dann schreiben Sie auf jeden Fall auf SO oder anderen Entwickler-Foren und Völker Meinungen fragen, fragen die Leute, wie sie ein Projekt / Thema nähern würde. Sie werden nicht im Allgemeinen, neue Techniken / Methoden / Funktionen lernen, wenn Sie sehen, wie sie verwendet wird (wie Sie wissen, was zu suchen, wenn Sie nicht wissen, es existiert?)

Auch, wie bereits erwähnt, nimmt an einem OS-App. Zum Source und finden Sie einen Entwickler ein Projekt benötigen. Oder eine App herunterladen und versuchen, ein Plug-in für sie zu schreiben (ich bin ein Plugin für Invision 3,0 atm zu schreiben und ein paar Dinge zu lernen.)

Ich hoffe, das hilft.

Lesen anderer Leute Code. Sie haben eine eigene Bibliothek jetzt, aber Sie könnten einige Erleuchtung erhalten, wenn die Quelle von anderen Anwendungen zu lesen. Dann fragen Sie sich ‚, warum die. Seien Sie der Blog-Autor, statt des Lesers. Außerdem betont mehr auf dem Programmierer als die Sprache. Vielmehr sehen Lösungen, die bereits ein Problem lösen und versuchen, sie mit Ihrem eigenen Wissen zu replizieren. Viel Glück und viel Spaß!

Der Ansatz zu sehen, in anderem Code-Programmierer ist auf jeden Fall ein guter Weg, „gut“ oder „schlecht“ Praktiken zu lernen. Nach dem Lesen der anderen Code entwickeln Sie ein „Gefühl“ für guten Code.

ich auf jeden Fall empfehlen Frameworks wie Zend Framework Symfony, CakePHP oder Agavi weil viele Mitwirkende an diesem Code suchen und entwickeln sie ständig auf die „ideale“ Lösung (die natürlich nie ... zu erreichen);) Sie noch kann die Entscheidung treffen, Ihre eigenen Klassen statt denjenigen, den Rahmen bietet die Entwicklung ...

Bei einem so langen PHP Hintergrund Sie auf einen Open-Source-Framework beitragen könnten in Erwägung ziehen. Diskussionen mit anderen Entwicklern bringen Sie weiter in einem schnelleren Weg.

Zeigen Sie Ihren Code zu anderen und fragen Sie nach konstruktivem Feedback hat die gleiche Wirkung. Man kann nie wissen, wie gut Sie, bis Sie Benchmark mit anderen Ihre Fähigkeiten sind. Immer in konstruktiver Weise. Dies wäre ein natürlicher Prozess sein, wenn zu einer Open-Source-Framework beitragen. ;)

Sie sollten mit ihnen mit Beispielen, Arbeit arbeiten, wenn Sie sie erweitern, so erfahren Sie, wie Beispiele zu erweitern, indem sie mehr funktionale und mehr Funktionen geben.

Auch wenn es gut ist, etwas zu schaffen, dass Sie bisher in PHP gelernt. Um die Praxis mehr, sollten Sie so etwas wie ein Reservierungssystem, usw. Früher erstellen oder später werden Sie in der Lage sein, mehr zu erweitern, indem sie mehr lernen, wenn Sie mehr in PHP studieren, die Ihre Entwicklung führen wird viel besser sein.

Sie können Ihre Firma fragen, ob sie Ihnen eine Zend PHP-Zertifizierungsprüfung bezahlen konnte. Studieren für diese Prüfung würde verpflichten Sie PHP gut und Zug zu wissen, durch einen großen Teil der Dokumentation zu lesen, die Zend Studienführer, und auch durch das Training mit Probeklausuren. Es ist eine sehr effiziente Art und Weise zu verbessern, und es sieht ganz gut aus auf einem Resümee.

"Eigene Bibliothek von Funktionen" == "a [idiosynkratisch und wahrscheinlich sucky] framework".

Ich empfehle das Lernen Symfony , weil die Entwickler scheinen konsequent danach streben, alles zu tun, nach „besten“ Praktiken. .. aber man könnte wahrscheinlich eine Menge von einem des populären Frameworks lernen.

Machen Sie Ihren eigenen Rahmen nicht schreiben. Bitte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top