我正在尝试使用Fileable特性,该特性将根据下面提到的文件实体为实体提供CRUD文件的方法.
阅读Doctrine上的文档并搜索互联网之后,我能找到的最好的是继承映射,但这些都要求子类扩展超类,这是不理想的,因为当前的实体已经扩展了其他类.我可以拥有FileFoo实体和FileBar实体,但这太乱了,需要额外的连接(super- > sub- > entity).
或者,我可以有一个文件的实体,而对实体的许多列(这样foo_id的Foo对象,bar_id在bar对对象等),但是这就会变得混乱,并会需要,我会希望添加的Fileable特质每一个实体的新列太.
所以对于这些问题:我是否在考虑如何错误地保存数据?我错过了Doctrine/Symfony中的一些功能/功能吗?如果我要分配Doctrine添加此功能,你认为我会添加这样的功能吗?我应该在哪里看?
<?php
/**
* File
*
* @ORM\Table()
* @ORM\Entity()
* @ORM\HasLifecycleCallbacks()
*/
class File
{
/**
* @var integer
*
* @ORM\Column(type="integer")
* @ORM\Id()
* @ORM\GeneratedValue()
*/
protected $id;
/**
* @var string
*
* @ORM\Column(type="string")
*/
protected $entityName;
/**
* @var string
*
* @ORM\Column(type="string")
*/
protected $entityId;
...
Run Code Online (Sandbox Code Playgroud) 在与同事讨论之后,我们认为应该采用与观点相关的逻辑.
例如,假设我们想要在视图中显示一个数字.我认为number_format(或者CakeNumber::format我们正在使用CakePHP)应该放在视图中,因为它与我们展示的内容有关.我的同事认为它应该进入控制器,因为这是所有逻辑的所在.
在这种情况下,我们有两个视图,一个用于网站和最终用户,另一个用于返回json响应的API视图.如果我将代码放在控制器中,我必须检查我正在使用哪个视图,因为它不是在json响应中给出一个字符串,而实际上它是一个整数.出于这个原因,我非常支持视图中的代码.
问题是,谁"更"正确,数字格式应该在哪里?
除了我在视图中放置代码的论点之外,他很乐意htmlentities在视图中使用,但我认为如果我不允许使用number_format,他就不能拥有htmlentities它,并且它应该在控制器中完成.