我有以下功能:
function array_duplicates($array)
{
$duplicates = array();
$unique = array_unique($array);
for ($i = 0; $i < count($array); $i++) {
if (!array_key_exists($i, $unique)) {
$duplicates[] = $array[$i];
}
}
return $duplicates;
}
这个函数显然不适用于任何特定模型,并且它不是模板助手。放置此功能的合适位置在哪里? (请不要说“任何你想要的地方”。)
这可能是您要放入服务中的东西类型。创建一个像这样的类:
class ArrayUtils
{
function array_duplicates($array)
{
...
return $duplicates;
}
}
然后将其定义为服务。如果您使用 YAML,则可以将如下内容放入 config.yml 文件中:
services:
arrayUtils:
class: Full\Path\To\ArrayUtils
在此配置下,Symfony 将创建 ArrayUtils 的单个实例,并授予所有控制器访问它的权限。然后你可以这样调用它:
class SomeController
{
public function someAction()
{
...
$duplicates = $this->get("arrayUtils")->array_duplicates($array);
...
}
}
这都是 Symfony 依赖注入框架的一部分。这非常酷,我建议您在这里阅读:http://symfony.com/doc/2.0/book/service_container.html http://symfony.com/doc/2.0/book/service_container.html
替代方案
现在,对于这么小的代码块来说,这可能有点过大了。如果您只想在单个捆绑包中使用它,那么您可能只想将其放入基本控制器中,并让所有其他控制器扩展该基本控制器。
class BaseController
{
function array_duplicates($array)
{
...
}
}
class SomeController extends BaseController
{
function someAction()
{
$this->array_duplicates($array);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)