2009-07-08 7 views
4

Vor kurzem hatte ich eine Idee, meine eigene String-Klasse erstellen einfacher mit dem PHP-Funktionen zu machen. Statt strlen($str) schreibe ich $str->length(). Erleichtert das Speichern von Parameterbestellungen in bestimmten Funktionen, z. B. substr.Sollte PHP Objekte als grundlegende Datentypen verwenden?

Ich habe einige Timing-Skripte darauf ausgeführt und festgestellt, dass es etwa 5 mal langsamer ist als mit den regulären Funktionen. Ich habe das nicht in einer realen App noch nicht getestet, so dass ich nicht wissen, wie unbedeutend das sein wird (1ms vs 5 ms oder 100 ms vs 500ms?).

Wie auch immer, es fiel mir auf, dass PHP sich jetzt mehr auf OOP konzentriert, wäre es nicht sinnvoll, Strings, Arrays und andere Basistypen objektorientiert zu machen? Sie könnten dann die Funktionen besser benennen und der Code würde sich einfach "schöner" anfühlen. Und langsam die alte Art, Dinge zu tun, auslaufen. Irgendwelche Vor-/Nachteile dazu?

Antwort

4

Sie könnten Ihren Code immer dokumentieren und einfach die von PHP bereitgestellten Funktionen verwenden. Es ist schwer zu sagen, ob es dich auf lange Sicht beeinflussen wird oder nicht. Es gibt viele verschiedene Faktoren, die das beeinflussen können. Versuchen Sie es, vielleicht und wenn es nicht funktioniert, wechseln Sie zurück auf den ursprünglichen Weg.

Persönlich würde ich nur mein Dokument gut dokumentiert halten, anstatt zu extravagant zu werden. Wenn Sie den Push zu mehr OOP machen möchten, ist es am besten, sich in ein Framework zu schauen.

Ich wünschte, PHP würde es von Anfang an so einfach machen. Der Code würde so ordentlich aussehen.

+2

Und wenn ein Rahmen noch mit nicht tun es für Sie, könnte es Zeit sein, einen anderen zu suchen in Sprache, insbesondere eine, die wirklich objektorientiert ist. –

1

denke ich, es wäre schön, aber es wäre PHP nicht mehr ...

0

Ich verstehe, warum Sie das tun, aber Bibliotheken und Abstraktionen, die nichts anderes neben „machen es tun einfacher für den Programmierer "sind meiner Meinung nach eine Verschwendung von Zeit. Sie sind selten effizient, sie sind Flaum, und sie sind sogar irgendwie protzig.

PHP hat viele Fehler, das ist sicher, aber Sie werden eine Menge Zeit verbringen, die besser woanders verbracht werden könnte, wenn Sie versuchen, Workarounds für sie überall zu erfinden.

1

Sicher, $somestring->length() ist nett, aber auf der Rückseite müssen Sie $somestring = new String('asdf...') immer wenn Sie eine Zeichenfolge erstellen und dann ständig Zeichenfolgen in Zeichenfolgen konvertieren und umgekehrt. Sie am Ende machen es schwieriger zu schreiben & auf lange Sicht zu halten.

Ich sehe nicht wirklich die PHP-Sprache jemals auf diese Weise ändern - es würde zu viel der grundlegenden Sprache ändern. Wenn Sie eine Sprache wie diese möchten, müssen Sie die Sprache wechseln, anstatt zu hoffen, dass sich die Sprache ändert.

+0

Das ist jetzt nicht korrekt. String-Objekte können mit der magischen Methode "__toString" als reguläre Strings fungieren. Indizierter Zugriff auf Array-Objekte könnte mit der ArrayAccess-Schnittstelle erfolgen. Ich werde ein Benchmarking durchführen, um zu sehen, wie sehr sich das auf die Leistung auswirkt, wäre ordentlich. –

0

Werfen Sie einen Blick auf Stringy. Es gibt Ihnen eine Tonne von nützlichen Methoden, die mit besonders UTF-kodierten Strings einfacher in PHP macht das Arbeiten:

$stringy = S::create('Fòô', 'UTF-8'); 
count($stringy); // 3 
Verwandte Themen