我使用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