在Symfony2中包含用户自定义函数最佳实践

时间:2011-11-15 06:02:07

标签: php symfony

我是Symfony2的新手,我无法理解我应该在哪里制作我的自定义跨项目功能(例如array_merge_overwritearray_last等)?我使用两种类型的应用程序:web(MVC)和控制台(扩展ContainerAwareCommand)。

或者还有另一种“正确的方法”吗?

2 个答案:

答案 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)

您可以将函数转换为某些类的静态方法,以使其可自动加载。或者......好吧......把它们放在你想要的地方,并且每次都需要它()。