PHPDoc,工厂@return类型

时间:2015-05-11 23:42:51

标签: php polymorphism phpstorm return-type phpdoc

我们说我已经

  • 带有一个抽象方法的抽象类。
  • 以子句自己的方式定义抽象方法的2个子类。
  • 根据参数返回2个子类之一的实例的工厂。

以下是示例代码

abstract class Datalist{
    abstract public function render($arg1, $arg2);
}

class Datalist_Table{
    public function render($arg1, $arg2){
        /* do something here */
    }
}

class Datalist_List{
    public function render($arg1, $arg2){
        /* do something here */
    }
}

class DatalistFactory{

    /**
     * usual stuff
     *
     * @return Datalist
     */
    public static function build($args){
        $class_name = 'Datalist_' . $args['type'];
        return new $class_name($args['m'][0], $args['m'][1]);
    }
}

//in some other file
$list = DatalistFactory::build($args);
$list-> ....

我的问题

我的IDE(PHPStorm)没有提示$list->render()。我猜是因为它已被声明为abstract

问题
我应该在PHP @return的PHPDoc中放置DatalistFactory::build(),以便IDE提示子类中定义的函数。

P.S。

1 个答案:

答案 0 :(得分:1)

您需要在项目中打开此文件。我使用phpstorm 8.0.3在项目中创建新文件并插入您的代码。一切正常=)

code completion