Model 在zf2中使用模型的好理由?

Model 在zf2中使用模型的好理由?,model,zend-framework2,Model,Zend Framework2,我在zf2项目中重新分解代码,我注意到使用模型类实体并不是真正必要的。 例如,一个典型的模型是,它里面没有其他方法: namespace Application\Model\Entity; use Application\Model\Entity; class User extends Entity{ const DB_TYPE = 'main'; public $id; public $username; public

我在zf2项目中重新分解代码,我注意到使用模型类实体并不是真正必要的。 例如,一个典型的模型是,它里面没有其他方法:

namespace Application\Model\Entity;
use Application\Model\Entity;

    class User extends Entity{

        const DB_TYPE = 'main';
        public $id;
        public $username;
        public $password;
        public $is_super;


        public function exchangeArray($data)
        {
            $this->id     = (isset($data['id'])) ? $data['id'] : null;
            $this->username = (isset($data['username'])) ? $data['username'] : null;
            $this->password = (isset($data['password'])) ? $data['password'] : null;
            $this->is_super = (isset($data['is_super'])) ? $data['is_super'] : null;

        }
    }
存储库方法将是:

public function fetchAllOrdered($orderby, $asc_desc='asc')
{
    $select = new \Zend\Db\Sql\Select;
    $select->from( 'user' );
    $select->columns(array('*'))->order($orderby.' '.$asc_desc);

    return $this->tableGateway->selectWith($select);
}
我注意到tableGateway不需要select/insert/update的模型定义,在任何情况下,当从用户表中选择时,它都会返回一个ArrayObject。在大多数情况下,在执行连接或自定义查询时,不使用模型

例如,我的一个缺点是,如果我更新一个表,添加或删除列,我也应该更新模型

我为什么要使用模型? 有什么好处? 模型是否会影响查询的性能?
这是一个相当广泛的问题;当然不是针对ZF2的。当然,如果使用基于对象的数据库表示,则需要将数据库查询的列/值映射到实体,这会增加设置时间/性能的开销。正如您所注意到的,这无疑会增加应用程序的复杂性。但是,缺点通常被认为是可以接受的,因为您可以使用对象(比如封装、继承等)而不是普通值来操作域数据。我建议对“对象关系映射器的好处”进行更多的研究。。在一个简单的应用程序中,您可能会认为ORM的许多缺点大于您获得的好处。只有你能在每个项目的基础上衡量这一点。然而,根据我的经验,ZF2使得集成对现有ORM的支持(如条令2)变得非常容易。我在ZF2中使用基本的tablegateway,我决定避免使用条令2,因为它在某些项目中是性能杀手,并且会带来大量开销。即使tablegatway本身也会增加一些开销,但覆盖executeSelect后,我们解决了一些性能问题。问题是我们已经为每个表定义了模型,但似乎完全没有用。应用程序的大部分逻辑都是在存储库和对象关系映射器的服务好处中完成的,我在搜索中没有这个术语。非常感谢。