2010-04-08 3 views
6

Ich habe eine beträchtliche Anzahl von Objektbibliotheken für PHP 5.2.5 geschrieben, und ich versuche, die Vorteile der Nachrüstung von Namespaces abzuwägen. Ich habe im Moment keine Bedenken über die Server-PHP-Version, da alle relevanten Maschinen unter meiner Kontrolle sind, also mache ich mir keine Sorgen über die Abwärtskompatibilität. Was die Struktur der Bibliotheken betrifft, verwende ich die gleiche Konvention wie das Zend Framework (z. B. Library_Module_Class_Name), so dass ich derzeit keine internen Namenskonflikte in den Bibliotheken habe. Ich würde erwarten, die Bibliotheks- und Modulteile dieser Klassennamen in Namensräume zu verschieben.Gute Gründe, PHP-Bibliotheken in Namespaces zu migrieren

Das heißt, wenn der Code bereits geschrieben ist, gibt es einen guten Grund, zu Namespaces zu verschieben?

Danke, Joe

+1

Nun, * Wenn * Sie migrieren möchten und Ihr Code der ZF-Namenskonvention folgt, sehen Sie sich deren Tools an, die die Konvertierung automatisch ausführen: http://blog.calevans.com/2010/03/27/zends-new-namespace-converter/ – Gordon

Antwort

5

Wenn Sie nach technischen Gründen suchen, glaube ich nicht, dass es etwas gibt, was die Kosten für einen großen Codewechsel rechtfertigen würde. Soweit ich weiß, verleihen Namespaces keinen technischen Vorteil oder Leistungsvorteil. Es ist einfacher, ordentliche Autoloading-Funktionen für einen gut strukturierten Satz von PHP-Code mit Namespaced zu schreiben, aber ansonsten fällt mir nichts ein, was ein erschütternder Grund wäre, mit der Konvertierung zu beginnen. Wenn überhaupt, gibt es wahrscheinlich einen kleinen Overhead für die Namensraumauflösung (Benchmarks wären nett zu sehen, aber ich bin mir sicher, dass es ein vernachlässigbarer Unterschied ist).

Das heißt, ich habe vor kurzem begonnen, eine alte Reihe von Code zu aktualisieren, um Namespaces zu verwenden, und ich genieße die organisatorischen Fähigkeiten, die es bietet. Der Code hat eine Tendenz, ein bisschen mehr wortreich zu sein, aber ich habe IDEs zu Beginn des Upgrades auf Netbeans 6.8 umgestellt, und die Autocomplete kümmert sich um eine Menge der Mühsal des Importierens und Beziehen von Namespaces. Der Namespace-Support hat mich tatsächlich beeindruckt. Es hat das ganze Projekt ziemlich einfach gemacht, und eigentlich, wage ich es zu sagen, Spaß.

+0

Also Namespacing hat tatsächlich Ihren Code * mehr * wortreich gemacht? Ist das nur eine Frage der "Use X" -Anweisungen oder etwas anderes? Kannst du mir etwas mehr dazu sagen? Danke! –

+0

Oh, sicher. Ich habe vorher noch kein Benennungsschema im Zend-Stil verwendet, das ist wahrscheinlich ein großer Teil davon. Ich hatte eine komplexe automatische Ladefunktion, die Dateipfade basierend auf dem Benennungsschema ausarbeitete, aber es waren nicht alle Unterstriche. So mache ich jetzt statt '$ x = new Person()' Dinge wie '$ x = new \ Package \ People \ Person()' (konstruiertes Beispiel). Nur manchmal etwas schwerer zu lesen, aber ich gewöhne mich daran. Netbeans 6.8 füllt Namespaces automatisch aus, während Sie tippen, also wenn ich anfange, 'new Pers ... 'zu tippen, wird es berechnet. Es wird auch 'use'-Anweisungen an der Spitze für Sie auch erstellen, also mag ich es. – zombat

1

Ja, Ihr Objekt ist ein Objekt kein Namespace_Prepended_To_An_Object. Würdest du lieber mit einem Controller als mit einem Zend_Controller arbeiten? Letzteres sieht einfach lächerlich aus.

+2

Ich glaube, das ist keine Antwort auf die Frage .... – mattbasta

+2

Dies ist der Punkt der Namespaces an erster Stelle. – blockhead