В отношении этого поста:тип PhpStorm намекая подклассы BaseClass
это одно о краевой случае в намекая типа PhpStorm. Пожалуйста, попробуйте следовать - я сделаю все возможное, чтобы быть как можно более ясно:
Итак, у меня есть этот базовый абстрактный класс:
abstract class myBaseController {
protected $_model;
...
}
который еще один класс наследуется от:
class myController extends myBaseController {
$hello = 'hello';
...
}
и который дополнительно расширен с помощью третьего класса:
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);
}
Ниже приводится образец класса MyModel:
class myModel extends BaseModel {
$world = 'world';
public function form($my_variable) {
do_something();
}
Мой истинный вопрос в том, как правильно «PHPDoc» этот сценарий:
подкласс myNewController
использует унаследованный переменные _model
присвоить экземпляр других класс myModel
, который имеет уникальную функцию form
. Как следует правильно узнать PHPStorm о form
в myNewController
?
Мое решение до сих пор включает в себя документирование myBaseController
так:
abstract class myBaseController {
/**
* @var object
*/
protected $_model;
...
}
Однако я думаю, что @var object
слишком широк (PhpStorm не найдет свое заявление), и я думаю, что должно быть лучше (и более конкретный) способ сделать это.
Может быть, мы могли бы вместо этого сделать:
/**
* @var BaseModel
*/
если PhpStorm был способ смотреть на подклассы для метода.
Любые идеи? Спасибо всем заранее.
Try: '/ ** * @var $ имяПеременной ClassName * /' – vaso123
@lolka_bolka Если я это сделаю, это сработает, но тогда '$ _model' будет заблокирован до' ClassName'. '$ _model' должен быть свободен от любого класса, где каждый может иметь уникальные методы. Поэтому я должен -идеально документировать '$ _model' из подкласса' myNewController'. – kstratis
Не могли бы вы прокомментировать нижний предел? – kstratis