2017-11-27 1 views
0

Ich habe eine Methode in meiner Klasse, um ein neues 'self' bei der Ausführung zu erstellen.Erstellen einer neuen Instanz einer geerbten Klasse über die geerbten statischen Methoden

class foo { 
    private $id; 

    public function __construct($id) { 
     $this->id = $id; 
    } 

    public static function byId($id) { 
     return new self($id); 
    } 

} 

Und jetzt will ich die byId Methode foo verwenden und sie in bar verwenden, um als solche

class bar extends foo { 
    public function test() { 
    echo "test"; 
    } 
} 

jetzt tun sollte ich in der Lage sein, bar zu tun :: byId (id), Dies liefert jedoch immer das übergeordnete Objekt und nicht das Balkenobjekt.

Wie kann ich sicherstellen, dass byId das Objekt der geerbten Klasse zurückgibt, wenn es durch es aufgerufen wird?

+0

Wie würden 'Test()' jemals rufen 'foo :: byId()'? Was .. –

+0

Lawrence Cherone Ich bin mir nicht sicher, was du meinst, ich möchte bar-> test() mit dem statischen Balken :: byId (id), wo die byId statische Methode von foo – pandaJuan

+2

geerbt wurde versucht haben Sie versucht haben Verwenden Sie 'return new static ($ id);' ist nicht von 'return new self ($ id);'? –

Antwort

1

Verwenden return new static($id); statt return new self($id);

Verwandte Themen