我是Symfony2的新手,我无法理解我应该在哪里制作我的自定义跨项目功能(例如array_merge_overwrite
,array_last
等)?我使用两种类型的应用程序:web(MVC)和控制台(扩展ContainerAwareCommand
)。
或者还有另一种“正确的方法”吗?
答案 0 :(得分:7)
创建service并将常用功能放入其中。例如,您可以将其命名为ArrayService
,并将其在容器中注册为array.service
。然后,您可以通过
$this->get('array.service');
和命令通过
$this->getContainer()->get('array.service');
所以,你的代码看起来像这样:
$element = $this->get('array.service')->last($array); // or ->arrayLast($array)
如果您需要跨多个项目使用相同的功能,请使用该服务创建一个包并将其添加到每个项目的deps
文件中。然后在运行bin/vendors install
脚本时安装它。
答案 1 :(得分:0)
您可以将函数转换为某些类的静态方法,以使其可自动加载。或者......好吧......把它们放在你想要的地方,并且每次都需要它()。