2017-10-25 1 views
1

Ich habe meine eigene DB - Modellstruktur erstellt, die Laravel ähnlich ist. Ich habe mit 2 Problemen konfrontiert.PHPDoc unterschiedlicher Rückgabetyp für erweiterte Klassen

Ich habe eine Klasse, die alle meine Modelle erweitern. Zum Beispiel erweitert sich meine User Klasse Model. Ich möchte diese get() Methode Rückgabetyp der Klasse, die erweitert wird, zurückgeben.

Ist das möglich?

Class Model extends DB { 
    /** 
    * @return AnyClassThatExtended 
    */ 
    function get() 
    { 
    } 
} 

Class User extends Model { 
    function test() { 
     $user->get(); // I want it to return User type of object 
    } 
} 
+1

'@return static' sollte den Job erledigen. Es funktioniert gut - sehen Sie selbst: https://postimg.org/image/41foax7ju3/. Wenn dies nicht der Fall ist - vielleicht liegt es an Ihrem Code -, dann stellen Sie ein besseres Codebeispiel bereit. – LazyOne

Antwort

2

sollten Sie

private static $instance; 

/** 
* return static 
*/ 
public function get() { 
    if (is_null(self::$instance)) { 
     self::$instance = new static(); 
    } 

    return self::$instance; 
} 

verwenden, da Sie aktuelle Klasse zurückkehren, die Sie sich gerade befinden (wenn ich das richtig verstehe)

Es ist möglich, dass PhpStorm es nicht erkennt

+0

Ich habe es auf PHPStorm versucht und wie du sagtest es nicht erkannt. Es denkt, als würde ich ein Model-Objekt zurückgeben. Atom hat es reibungslos funktioniert. Es sieht also so aus, als gäbe es keinen anderen Weg für PHPStorm. Danke für die Hilfe! –

Verwandte Themen