Rispetto a questo post:tipo PhpStorm accennando sottoclassi di baseclass
questo è circa un caso limite in PhpStorm tipo hinting. prega di provare a seguire - Farò del mio meglio per essere il più chiaro possibile:
Così, ho questo classe astratta di base:
abstract class myBaseController {
protected $_model;
...
}
che un'altra classe eredita da:
class myController extends myBaseController {
$hello = 'hello';
...
}
e che è ulteriormente esteso da una terza classe:
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);
}
Sotto è un campione della classe MyModel:
class myModel extends BaseModel {
$world = 'world';
public function form($my_variable) {
do_something();
}
La mia vera domanda è come propriamente "phpdoc" questo scenario:
Una sottoclasse myNewController
sta utilizzando una variabile ereditata _model
per assegnare un'istanza di un altro classe myModel
che ha una funzione unica form
. Come dovrebbe PHPStorm scoprire correttamente su form
in myNewController
?
La mia soluzione finora coinvolge documentare myBaseController
come questo:
abstract class myBaseController {
/**
* @var object
*/
protected $_model;
...
}
Tuttavia penso @var object
è troppo ampia (PhpStorm non troverà la sua dichiarazione) e la mia ipotesi è che ci dovrebbe essere una migliore (e più specifico) per farlo.
Forse potremmo invece fare:
/**
* @var BaseModel
*/
se PhpStorm aveva un modo di guardare negli sottoclassi per il metodo.
Qualche idea? Grazie a tutti in anticipo.
Prova: '/ ** * @var $ nomeVariabile NomeClasse * /' – vaso123
@lolka_bolka Se lo faccio funzionerà ma poi '$ _model' si bloccherà in' ClassName'. '$ _model' dovrebbe essere libero di essere assegnato a uno qualsiasi dei miei corsi modello in cui ognuno di essi può avere metodi univoci. Perciò dovrei -ideally- documentare '$ _model' all'interno della sottoclasse' myNewController'. – kstratis
Potresti commentare il downvote? – kstratis