Необычное приведение типов в PHP - PullRequest
0 голосов
/ 11 августа 2011

Мы пытаемся создать объект, методы которого могут быть автоматически завершены с помощью Eclipse PDT или Zend Studio, но мы застряли в точке, и я хотел спросить ее у вас.

Проблема в том, Eclipse не может найти метод класса с кодами ниже;

class Soup {
    private static $_obj;

    public function __construct(){}

    public static function getObj($objName){
        if(isset(self::$_obj)) {
            return self::$_obj;
        } else {
            self::$_obj = new $objName;
            return self::$_obj;
        }
    }
}

class Foo extends Obj {

}

class Obj {     
    public function test() {}
}
// This is what we are trying to reach;
Soup::getObj('Foo')->test();

В PHP нет проблем с этим, но в Eclipse PDT или Zend Studio автозаполнение не завершается -> часть test (). Есть ли решение для этого от имени Eclipse PDT или есть другой способ создать этот класс?

Ответы [ 2 ]

2 голосов
/ 19 августа 2011

Все (большинство) IDE используют docblocks для более продвинутых функций автозаполнения, то же самое с Zend Studio и Eclipse. Хороший докблок не только сделает ваш код хорошо документированным и phpdoc-совместимым, но и даст вам намного лучшую помощь в коде!

1 голос
/ 11 августа 2011

вы не можете, и это не проблема IDE.

в php (в отличие от java) вы не знаете тип возвращаемого значения функции.поэтому для php невозможно знать, что вернет Soup:getObj('Foo') ... может быть, объект, может быть массив или, может быть, он ничего не даст

В Netbeans вы могли бы помочь ему, добавив документацию в функцию, чтобы сообщитьему, что функция возвращает объект Foo

Надеюсь, это поможет

...