Im Hinblick auf dieses Thema anzudeuten:PhpStorm Typ Subklassen von Basisklasse
dieser ist über eine Kante Fall in PhpStorm Typ Hinting. Bitte versuchen Sie es zu folgen - ich werde mein Bestes tun, so klar wie möglich zu sein:
So habe ich diese Basis abstrakte Klasse bekam:
abstract class myBaseController {
protected $_model;
...
}
, die eine andere Klasse erbt von:
class myController extends myBaseController {
$hello = 'hello';
...
}
und die weiter durch eine dritte Klasse erweitert:
class myNewController extends myController {
public $myvar;
$this->_model = new myModel();
...
public function myFunc(){
// !!form is underlined as: "Method 'form' not found in class"!!
$form = $this->_model->form($new_variable);
}
Nachfolgend finden eine Probe der MyModel Klasse:
class myModel extends BaseModel {
$world = 'world';
public function form($my_variable) {
do_something();
}
Meine wahre Frage ist, wie man richtig „phpdoc“ dieses Szenario:
Eine Unterklasse myNewController
wird mit einer vererbten Variable _model
eine Instanz eines anderen vergeben Klasse myModel
, die eine eindeutige Funktion hat form
. Wie sollte PHPSstorm über form
in myNewController
richtig herausfinden?
Meine Lösung so weit beinhaltet myBaseController
wie diese Dokumentation:
abstract class myBaseController {
/**
* @var object
*/
protected $_model;
...
}
aber ich denke, @var object
zu breit ist (PhpStorm wird seine Erklärung nicht gefunden) und meine Vermutung ist, dass es eine bessere sein sollte (und spezifischer) Weg, dies zu tun.
Vielleicht könnten wir stattdessen tun:
/**
* @var BaseModel
*/
wenn PhpStorm einen Weg in die Unterklassen für die Methode suchen hat.
Irgendwelche Ideen? Vielen Dank im Voraus.
Versuchen: '/ ** * @var $ Variablennamen Klassennamen * /' – vaso123
@lolka_bolka Wenn ich das mache, wird es funktionieren, aber '$ _model' wird auf' ClassName' festgelegt. '$ _model' sollte frei sein, um einer meiner Modellklassen zugewiesen zu werden, wo jedes einzelne Methoden haben kann. Daher sollte ich "$ _model" aus der Unterklasse 'myNewController' dokumentieren. – kstratis
Könnten Sie bitte den Downvote kommentieren? – kstratis