Умеет ли PHPStorm распознавать возвращаемый объект через статический метод?

Недавно установил себе эту IDE, поэтому пытаюсь разобраться, что же она умеет. Быстрее будет наглядно показать. Есть код:

<?php

class system {

    public function getSingleton(){
        return singleton::getInstance();
    }

}

class singleton{

    public static $instance  = null; // Инстанс объекта данного класса

    private function __construct() {}
    private function __clone() {}

    /******************************/
    /* Возвращаем инстанс объекта */
    public static function getInstance() {
        if ( is_null( self::$instance ) ) {
            self::$instance = new singleton;
        }
        return self::$instance;
    }
    /* Возвращаем инстанс объекта */
    /******************************/

    public function test() {
        echo '1';
    }
}

$system = new system();

$object = $system->getSingleton();



При наборе в строке $object-> я ожидаю увидеть подсказку с методами класса singleton, однако IDE выдает мне сообщение «No suggestion». Есть ли возможность научить IDE распознавать возвращаемый объект?

Версия IDE 4.0.3.

Заранее благодарен за ответы.
  • Вопрос задан
  • 3737 просмотров
Пригласить эксперта
Ответы на вопрос 4
winbackgo
@winbackgo
у метода getSingleton() надо коммент /** return singleton */
/**
 * @return singleton
 */
public function getSingleton(){

// и даже по цепочке должно работать
/**
 * @return singleton
 */
public static function getInstance() {
Ответ написан
Fr3nzy
@Fr3nzy
Простой способ: использовать /** var */, насколько я понимаю.
Т.е. что-то типа
/** @var $system singleton */
Ответ написан
winbackgo
@winbackgo
у метода getSingleton() надо коммент /** return singleton */
/**
 * @return singleton
 */
public function getSingleton(){

// и даже по цепочке должно работать
/**
 * @return singleton
 */
public static function getInstance() {
Ответ написан
taliban
@taliban
php программист
Укажите какого типа переменная котору возвращает ваш метод, в итоде даже в фабрике будет дополнение, при условии что каждая возвращаемая переменная/свойство будет иметь явно указанный тип
/**
 * @var singleton
 */
public static $instance  = null; // Инстанс объекта данного класса
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы