我使用PHP Storm作爲我的IDE,但我相信其他IDE如NetBeans將具有相同的問題,我將在下面進行解釋。使用Symfony2依賴注入保留自動完成功能
當使用像Symfony2這樣的框架時,我們添加了依賴注入的美妙世界。所以,對象可以簡單地使用類似下面的代碼片段進行實例化:
$myThingy = $this->get('some_cool_service');
這是非常方便的,因爲對象是已經預先配置。一個問題是,自動完成在基本上任何PHP IDE中完全中斷,因爲IDE不知道get()方法返回的是什麼類型。
有沒有辦法保存自動完成?會創建例如控制器的擴展是答案?例如:
class MyController extends Controller {
/**
* @return \MyNamespace\CoolService
*/
public getSomeCoolService() {
return new CoolService();
}
}
然後對於應用程序控制器,指定MyController作爲基類而不是Controller?
如何使用Factory類或其他可能的方法?
問題是它不知道它是一個對象,或者它不知道它是一個特定類的對象?如果它是前者,你不能只把$ myThingy作爲一個對象嗎? '$ myThingy =(object)$ this-> get('some_cool_service');' – DaveRandom
確實如此,但即使轉換爲對象仍然會讓IDE無法確定實例類的類型,這意味着......仍然沒有自動可悲地完成。 :( –
相同的東西,因爲我有:http://stackoverflow.com/questions/21936380/best-practise-including-code-completion-in-zf2,同樣的解決方案,但都需要額外的工作。 – Gizzmo