gpt4 book ai didi

php - 在 Symfony2 中放置模型辅助函数的位置

转载 作者:可可西里 更新时间:2023-11-01 12:29:53 24 4
gpt4 key购买 nike

我有以下功能:

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 的单个实例,并为您的所有 Controller 提供访问权限。然后你可以这样调用它:

class SomeController
{
public function someAction()
{
...
$duplicates = $this->get("arrayUtils")->array_duplicates($array);
...
}
}

这都是 Symfony 的依赖注入(inject)框架的一部分。这很酷,我建议在这里阅读它:http://symfony.com/doc/2.0/book/service_container.html

备选方案

现在,对于这么小的代码块来说,这可能有点矫枉过正。如果您只打算在单个 bundle 中使用它,那么您可能只想将它放入一个基本 Controller 中,并让所有其他 Controller 扩展该基本 Controller 。

class BaseController
{
function array_duplicates($array)
{
...
}
}

class SomeController extends BaseController
{
function someAction()
{
$this->array_duplicates($array);
}
}

关于php - 在 Symfony2 中放置模型辅助函数的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12732664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com