2011-01-14 20 views
4

In C# können verschachtelte Klassen wie diese sein, die nützlich sind, wenn Sie Klassen haben, die keine Bedeutung haben außerhalb des Bereichs einer bestimmten Klasse, z. in einem Fabrik Muster:Ist es möglich, verschachtelte Klassen in PHP zu erstellen, wie es in C# ist?

public abstract class BankAccount 
{ 
    private BankAccount() {} 
    private sealed class SavingsAccount : BankAccount { ... } 
    private sealed class CheckingAccount : BankAccount { ... } 
    public BankAccount MakeSavingAccount() { ... } 
    public BankAccount MakeCheckingAccount() { ... } 
} 

Ist das möglich in PHP?

Ich habe gelesen, dass es für PHP 5 geplant war, dann abgebrochen, dann wieder geplant, aber endgültige Informationen nicht finden können.

Kann jemand verschachtelte Klassen (Klassen innerhalb des Bereichs einer anderen Klasse) wie im obigen C# -Beispiel mit PHP 5.3 erstellen?

Antwort

1

Nein, das ist in PHP nicht möglich. Klassen müssen den globalen Namespace bewohnen. Das Beste, was Sie tun können, ist einfach so zu tun, als wären sie nicht in Ihrem gesamten anderen Code vorhanden.

Diese Art von Sache ist in PHP üblich; Zum Beispiel fehlen PHP statische Initialisierer. Wenn Sie also die statischen Member einer Klasse eifrig initialisieren möchten, müssen Sie eine öffentliche Methode von außerhalb der Klasse aufrufen. Hässlich.

Verwandte Themen