php - 在哪里放置实体的额外辅助函数

标签 php symfony twig code-organization

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

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

我可以想到几个选项,但不确定哪个是“正确”的做法。

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

最佳答案

如果您在 Game 实体中隐式存储死亡人数,则只需向该实体添加一个 getDeaths() 函数即可。无论如何你应该把它放在那里,而不是只保留一个无论如何都可以修改的公共(public)变量。

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

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

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

然后在您的模板中:

{{ game.numDeaths }}

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

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

然后在您的模板中:

{{ numDeaths }}

希望对您有所帮助。

关于php - 在哪里放置实体的额外辅助函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27660322/

相关文章:

php - 包含的PHP文件导致错误

php - 如何在 Symfony2 项目中正确集成第 3 方库

forms - 以 symfony 形式按字母顺序对组进行排序

symfony - 可以使用 groupBy 列作为带有 Doctrine 查询生成器的分组集合的关联数组索引吗?

php - 显示真实内容,而不是 HTML 标签和内联 CSS 包裹的内容

php - 有没有办法在 PHP PDO 中使参数可选?

php - 使用 PHP 对 MySQL 进行排序

javascript - 如何禁用对 "twig"的评论?

php - 在 .php 模板中包含 .twig 基本模板

php - 最好使用一个长查询还是多个?