2016-01-31 63 views
0

我的方法是這樣的:PHPStorm產生PHPDoc的

public function connect (Application $app) 
    { 

    $controller = $app['controllers_factory']; 

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

    return $controller; 
    } 

一切工作正常,但我想,以節省$應用程序在私有字段,這樣

private $app; 

    public function connect (Application $app) 
    { 

    $this->app = $app; 

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

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

    return $controller; 
    } 

在這種情況下PHPStrom拋出錯誤「在課堂上找不到方法」。我嘗試了phpdoc,但它不起作用(正如你看到我使用SILEX微框架)

+1

也許使用構造函數,在那裏設置你的$ app(private)變量,並且整個類都可以訪問它。 PHPdoc和它有什麼關係? – Kyslik

+0

使用構造函數一切正常(方法現在被發現),但Silex不讓我使用構造函數。 – Mati

+1

我不確定你試圖完成什麼,請編輯問題並添加該文件的整個代碼。或者嘗試在構造函數中調用父構造函數。 – Kyslik

回答

0

自動完成卡住在這一步,因爲它不清楚什麼是來自數組的值(即使它是一個對象,數組)。

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

有兩種可能性。首先,如果有一個由共享一個單一類型的元件的陣列,可以指定這樣的類型:

/** 
* @var Application[] 
*/ 
private $app; 

的另一種方法是指定一個可變直列類型:

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

這兩個選項都受PHPStorm支持。