【问题标题】:Trait location in bundle Symfony 2 project捆绑 Symfony 2 项目中的特征位置
【发布时间】:2015-11-20 10:05:35
【问题描述】:

我对 Symfony 2 的设计有疑问。事实上,我想在我的捆绑包中使用一个特征,但我不确定在哪里找到该特征。它不是控制器,也不是模型或实体。

我有一个解决方案,但我不确定它是否遵循最佳实践。这个想法是创建一个名为 /Trait 的新文件夹。对吗?

<your-bundle>/
├─ AcmeBlogBundle.php
├─ Controller/
├─ Entity/
├─ Trait/ <- My thought
├─ README.md
├─ LICENSE
├─ Resources/
│   ├─ config/
│   ├─ doc/
│   │  └─ index.rst
│   ├─ translations/
│   ├─ views/
│   └─ public/
└─ Tests/

非常感谢

【问题讨论】:

  • 您的Trait 是为了在您的实体中添加特定字段而创建的吗?
  • 不,这是为我的控制器添加一些通用功能
  • 接口会更好,不是吗?
  • @miguel,我认为,创建 BaseController 并从 BaseController 扩展控制器的最佳解决方案。
  • 接口没有任何功能,只有意图。如果您的特征是针对特定类型的类(控制器),那么将它们放在相应的命名空间Acme\BlogBundle\Controller\Traits 中可能是有意义的。

标签: php symfony design-patterns bundle


【解决方案1】:

你不能使用Trait,因为它是一个php关键字,所以你必须使用Traits,但除此之外,你的建议很好。

Bundle 结构只是为了您的方便,它不应该成为限制您的东西,您可以随意创建任何您喜欢的命名空间。其实你可以use Symfony without bundles at all

【讨论】:

  • 我自己不会使用 Traits,因为它太笼统了。有点像创建一个名为 Classes 的目录,然后将所有类文件粘贴在它下面。也许可以用对您的特定特征的描述来更新问题。
猜你喜欢
  • 2017-10-29
  • 1970-01-01
  • 1970-01-01
  • 2013-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-21
  • 2018-05-27
相关资源
最近更新 更多