PHPStorm生成phpdoc

PHPStorm生成phpdoc,phpstorm,silex,Phpstorm,Silex,我有这样的方法: public function connect (Application $app) { $controller = $app['controllers_factory']; $controller->get('/login', function () { return 'test'; }); return $controller; } /** * @var Application[] */

我有这样的方法:

    public function connect (Application $app)
    {

    $controller = $app['controllers_factory'];

    $controller->get('/login', function () {
       return 'test';
    });

    return $controller;
    }
/**
 * @var Application[]
 */
private $app;
一切都很好,但我想节省$app在私人领域,像这样

    private $app;

    public function connect (Application $app)
    {

    $this->app = $app;

    $controller = $this->app['controllers_factory'];

    $controller->get('/login', function () {
       return 'test';
    });

    return $controller;
    }

在这种情况下,PHPStrom抛出错误“类中找不到方法get”。我尝试了phpdoc,但它不起作用(正如您看到的,我使用的是SILEX micro framework)

自动完成在这一步遇到了问题,因为不清楚数组的值是什么(即使它是一个行为类似于数组的对象)

有两种可能性。首先,如果您有一个由共享单一类型的元素组成的数组,则可以指定如下类型:

    public function connect (Application $app)
    {

    $controller = $app['controllers_factory'];

    $controller->get('/login', function () {
       return 'test';
    });

    return $controller;
    }
/**
 * @var Application[]
 */
private $app;
另一种方法是指定内联变量的类型:

/** @var Application $controller */
$controller = $this->app['controllers_factory'];

PHPStorm支持这两个选项。

也许可以使用构造函数,在那里设置$app(private)变量,这样整个类都可以访问它。PHPdoc用它做了什么?用构造函数一切都很好(方法现在找到了),但Silex不允许我使用构造函数。我不确定你们想做什么,请编辑问题并添加该文件的全部代码。或者尝试调用构造函数中的父构造函数。哦,天哪,我在创建新实例时忘记了添加参数;)现在一切都好了!有点离题:但为什么要将其设置为属性,因为您只需要在
connect
方法中使用它?