2015-04-02 2 views
0

У меня есть два класса A и B и класс A имеет свойство объекта класса B. Когда я пытаюсь вызвать эту функцию класса B, phpstorm не показывает никаких предложений. Я делаю как этотphpstorm не дает предложения

Class A { 
    public $b; 
    function __construct($b) { 
     $this->b = $b; 
    } 
    public function someWork() { 
     $this->b->anotherWork(); 
    } 
} 

Class B { 
    public function callA() { 
     $a = new A($this); 
     $a->someWork(); 
    } 
    public function anotherWork() { 
     echo "do somethings"; 
    } 
} 

$b = new B(); 
$b->callA(); 

при вводе $ this-> b-> anotherWork() PhpStorm не показывает каких-либо предложение. Есть ли способ получить предложение от всех функций класса B из этой переменной b.

ответ

1

Использовать тип намекания.

В классе А объявить конструктор как это:

public function _construct(B $b) { 
    // do stuff 
} 

Это также позволяет PHP ввести проверить аргумент во время выполнения и сообщить об ошибке, если это не так.

+0

Ничего себе это выглядит более понятным и понятным. благодаря –

3

Попробуйте ввести намеки на переменную и/или PHPDoc на функцию, и она должна отлично работать.

Class A { 
    /** @var B */ 
    public $b; 

    /** 
    * @param B $b 
    */ 
    function __construct($b) { 
     $this->b = $b; 
    } 
    public function someWork() { 
     $this->b->anotherWork(); 
    } 
} 
+0

На самом деле, в данном случае, я думаю, что вы просто ищете тип подсказки для свойства 'b' класса' A', но с использованием PHPDoc никогда не бывает плохой идеей. – nateevans

+0

Работал спасибо –

+0

Отлично! пожалуйста, отметьте это как принятый ответ, если вы удовлетворены. – nateevans

Смежные вопросы