在何处放置实体的额外帮助程序函数


Where to put extra helper functions for an Entity

>我有一个实体,例如Game,具有一些属性,例如time,并且它下面有Event个实体。有关游戏的一些信息隐式存储在实体中,例如死亡人数(由死亡事件的数量给出)。

如果我想在模板(有权访问游戏对象)中显示死亡人数,我应该将逻辑放在哪里?

我可以想到一些选择,但我不确定哪个是"正确"的做法。

  • 将 getDeaths() 函数放入存储库
    中我的印象是它应该去的地方,但我不知道如何从模板正确访问它。
  • Game实体
    中放置一个 getDeaths() 函数最简单的事情,因为它很容易从模板访问。
  • 在控制器
    中创建函数向控制器询问此信息似乎并不灵活
如果要在

游戏实体中隐式存储死亡人数,则只需向实体添加getDeaths()函数即可。 无论如何,您可能都应该拥有它,而不仅仅是保留一个无论如何都可以修改的公共变量。

如果您必须直接从数据库中查询死亡人数,则需要 Repository 方法,在这种情况下,您可以将其直接传递给模板。

请记住,您可以将任意数量的变量传递给模板,因此它不必只是

return array('game' => $game);

然后在您的模板中:

{{ game.numDeaths }}

您可以轻松地将死亡人数直接传递到模板中,以便轻松访问:

return array('game' => $game, 'numDeaths' => $numDeaths);

然后在您的模板中:

{{ numDeaths }}

希望有帮助。

使用 twig 自定义扩展/函数:

public function getFunctions()
{
    return [
        new 'Twig_SimpleFunction('number_of_death', [$this, 'getNumberOfDeath'])
    ]
}
public function getNumberOfDeath(Entity $entity)
{
    // logic
    return $return;
}

用法:

{{ number_of_death(entity) }}