Ich liebe PHP wirklich, weil:
_ einfach zu entwickeln Web-Anwendungen (Sie richten LAMP in 10 Minuten und Sie sind bereit zu gehen)
_ leicht zu lernen
_ einfach zu implementieren (Sie brauchen nur Apache mit dem PHP-Modul)
Ich liebe Java wirklich, weil:
_ es ist stark typisiert
Ich war erstaunt über die Entwicklung mit Java und Netbeans. Jedes Mal, wenn ein Typ nicht übereinstimmte, wurde ich während der Entwicklung von der IDE alarmiert und die IDE selbst schlug den Fix vor.
Ich denke, starkes Tippen ist eine Glückseligkeit . Das stimmt: PHP-Arrays, die alles enthalten können, beschleunigen Ihre Entwicklung, aber dann müssen Sie Zeit damit verbringen, Fehler zu finden, während Sie mit ein wenig mehr Arbeit die IDE haben, die auf die Probleme für Sie hinweist. Dadurch fühle ich mich auch beim Refactoring sicherer.
Meine Frage ist also: Ist es möglich, Typen in PHP zu verwenden (einschließlich für den Rückgabewert einer Methode)?
Kennst du ein Projekt, eine Gabel, alles, was mir das erlauben würde?
Es könnte nur ein Pre-Parser sein, der einige Kommentare vor dem eigentlichen PHP-Parser überprüft (d. H.% Co_de%).
Bitte alles, was ein Konzept des Typs einführen würde, und damit meiner Meinung nach, würde eine PHP - Anwendung robuster machen und eventuell schneller implementieren (momentan denke ich, dass es schneller ist, Software in Java als in PHP zu entwickeln, dank die Hilfe der IDE).
Danke, Danke Dan
BEARBEITEN:
Das ist das einzige, was ich im Internet gefunden habe:
Ссылка
aber ich mag es nicht, hauptsächlich, weil Sie die Objekteigenschaften nicht auf eine Standardweise deklarieren können und die Ausführung des Skripts sicherlich langsamer machen. Ich möchte eine Methode, die offline arbeitet, während ich ... eine Art Kompilation entwickle.
Es gibt mehrere Möglichkeiten, Ihren Code steifer zu machen.
Verwenden Sie type-Hinweise in Methoden, um den Argumenttyp einzuschränken. Dies funktioniert nur für Klassen, Schnittstellen und Arrays. Siehe Beispiel:
%Vor%Ich benutze Typhinweis so viel wie ich kann, um mich vor albernen Fehlern zu schützen, wie das Übergeben von null oder primitivem Wert, während das Objekt erwünscht ist. Rückgabewerte sind leider nicht stark typisiert.
Verwenden Sie Zugriffsqualifizierer: public
, protected
, private
. Während auf öffentliche Member von einer externen Entität zugegriffen werden kann, kann nur auf geschützte und private Instanzen derselben Instanz (Basisklasse) zugegriffen werden. Berücksichtigen Sie auch die Verwendung von abstract
und final
-Qualifikatoren.
Code für Interfaces und nicht für Klassen, verwenden Sie Komposition und Aggregation aggressiv. Gewöhne dich an die Verwendung der Abhängigkeitsinjektion. Verwenden Sie gegebenenfalls bekannte Designmuster.
Machen Sie sich mit Elementen der Reflexion und der aspektorientierten Programmierung vertraut. Während es im AoP-Bereich sehr wenig PHP zu bieten hat, ist sein Reflexionssubsystem ziemlich gut. Sie können @annotations in Doc-Block-Kommentaren verwenden, um die Metaprogrammierung zu nutzen. Ich benutze es sehr, um Klassen mit Standort von Komponententests annotieren. Ich habe auch eine Implementierung von ACLs, bei denen Controller-Methoden mit (um es kurz zu sagen) anforderungsrelevanten Zugriffsebenen versehen sind:
%Vor%Schließlich beschränken Sie sich nicht auf PHP. Lesen Sie über andere Sprachen, nicht nur über die Mainstream-Sprache, sondern auch über die Fremdsprachen - diese sind voller brillanter Ideen. Schauen Sie sich Lisp, Erlang, Rebol an. Finden Sie ungewöhnliche Anwendungen für bestehende Sprachen, wie serverseitige JavaScript-Programmierung. Schreibe deine eigene Sprache. Ja, es wird scheißen, aber Sie werden viel lernen.
Finde eine andere Sprache.
Schwaches Tippen und JiT-Kompilierung ist Teil dessen, was PHP PHP macht. Wenn Sie der Meinung sind, dass die Eigenschaften von PHP gegen Ihre Programmierphilosophie verstoßen, dann verwenden Sie sie auf keinen Fall.
Es gibt andere Sprachen wie Ruby, die stark typisiert ist, aber JiT kompiliert wie PHP.
Vor fast einem Jahrzehnt schrieb ich den vom OP erwähnten Beitrag, in diesem Beitrag implementierte ich eine sehr grobe Lösung, die im Wesentlichen eine starke Typisierung mit magischen Methoden vortäuscht (ich stimme zu, nicht so toll) , aber in der neuesten Version von PHP haben sich die Dinge etwas entwickelt.
PHP wird niemals (wage ich zu sagen) zu einer stark typisierten Sprache, aber ich glaube, dass es in naher Zukunft zu einer allmählich typisierten Sprache (wie TypeScript)
Ab PHP 7.x ist es möglich, Rückgabetypen von Funktionen zu deklarieren und Skalartypen zu deklarieren / anzudeuten.
%Vor%Der einzige Teil, der in dieser Gleichung noch fehlt (PHP schrittweise typisieren) ist die Fähigkeit, Eigenschaftstypen zu deklarieren, dies wurde jedoch in einem aktuelles Dokumententwurf .
%Vor%Auszüge aus Ссылка