Klasse erweitert sich?

8

Ich bin auf eine PHP-Klasse gestoßen, die von einem früheren Mitarbeiter geschrieben wurde und folgendermaßen definiert ist:

%Vor%

Würde jemand bitte erklären, was hier vor sich geht? Erweitert sich diese Klasse? Ich weiß, dass ein Singleton einen privaten Konstruktor verwenden würde, aber nicht sicher, dass das hier passiert.

Die eigentliche Klasse hat mit Caching zu tun. Nicht sicher, ob das hilft.

    
Mike Moore 20.07.2011, 19:26
quelle

2 Antworten

6

Ich glaube nicht, dass Sie so etwas mit :: tun können; aber es sollte funktionieren, wenn Sie das Namespace-Trennzeichen verwenden: \

Ich habe gerade mit PHP PHP 5.3.5 getestet - und mit :: bekomme ich tatsächlich einen Fehler. Die Verwendung von \ funktioniert dagegen sehr gut (siehe Beispiel unten) .


Wenn Sie beispielsweise im globalen Namespace (außerhalb eines bestimmten Namespaces) arbeiten, können Sie eine Klasse SomeClass :

definieren %Vor%


Und in einem bestimmten Namespace namens SomeNamespace in meinem Beispiel könnten Sie eine Klasse SomeClass definieren, die die Klasse vom globalen Namespace aus erweitert, auf den als \SomeClass zugegriffen werden kann:

%Vor%


Hinweis: Hier habe ich die Klammer-Syntax verwendet, da ich m die beiden Teile des Codes in die gleiche Datei zu legen (siehe Beispiel 3 auf dieser Handbuchseite) - aber es sollte genauso mit mehreren Dateien funktionieren.


Beachten Sie, dass das Namespace-Trennzeichen bei den ersten Alpha-Versionen von PHP 5.3 nicht \ , sondern ::

war

Also, wenn Sie PHP 5.3 Alpha 1 oder 2 verwenden (und vielleicht 3, nicht sicher, ob \ vor oder nach Alpha 3 ausgewählt wurde) , könnte :: funktionieren.

(Natürlich sollten Sie kein Alpha verwenden - vor allem wenn man bedenkt, dass es seit zwei Jahren stabile Versionen von PHP 5.3 gibt)

    
Pascal MARTIN 20.07.2011, 19:39
quelle
2

Wenn ich mich bei der Entwicklung von 5.3% richtig erinnere, wurde co_de% als Namespace-Trennzeichen verwendet.

    
Glass Robot 20.07.2011 19:43
quelle

Tags und Links