Ran*_*ngh 18 php symfony fosuserbundle
我正在浏览FOSUserBundle.
我想说明Model/User.php
和之间有什么区别Entity/User.php
.
模型和实体不能相同吗?
Tra*_*vis 34
以下是关于Doctrine 2的角色和术语的最佳摘要.
Entity由Doctrine 2.0 ORM中的UnitOfWork模式(以及Java世界中的Hibernate)使用,也是现实世界中事物的对象表示.它具有与记录相同的属性和方法,但它不知道它的持久性.它基本上是一个POPO(普通的旧PHP对象).这允许这些类和对象非常轻量级.
模型是事物的概念对象表示.该术语可用于上述所有内容.记录就像实体或文档一样是模型.该术语描述了事物的对象表示.
因此,如果您想要创建一个包含某些模型的包,并且您希望您的包独立于任何持久层,您将创建定义该事物的模型类和接口.
您将在那里定义和/或实现不特定于任何持久性实现的所有内容,并且您将通过委派使用相关实体或文档类来处理特定内容.
这例如在定义用户模型的FOSUserBundle中完成.此用户模型在整个捆绑包中使用,但没有完整的实现来访问自己的数据(我没看,但我认为它可能只是一个接口).最终实现在实体类中完成,而另一个在文档类中完成,因此无论您使用MySQL还是MongoDB,您仍然可以使用相同的用户模型.您甚至可以在不更改代码的情况下从一个切换到另一个,因为它始终使用独立于实体或文档的模型.