Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 压缩DAO层的类_Php_Design Patterns_Orm_Doctrine - Fatal编程技术网

Php 压缩DAO层的类

Php 压缩DAO层的类,php,design-patterns,orm,doctrine,Php,Design Patterns,Orm,Doctrine,我正在使用一个MVC应用程序,它可以被认为是大的或中等的,它涉及到MYSQL上的数百个功能和400多个表。作为一个ORM工具,我们采用了依赖注入的原则,也采用了DAO数据访问对象模式来存储对每个实体类的查询,换句话说,每个表都有一个实体类,每个实体类都有一个DAO类 我不知道这是否正常,但问题是DAO类的规模越来越大,有些已经有30多个方法,每个方法代表一个查询或业务规则 我们正在尝试以更普遍和参数化的方式创建方法,而且,所有DAO类都是AbstractDAO类的子类,AbstractDAO类已

我正在使用一个MVC应用程序,它可以被认为是大的或中等的,它涉及到MYSQL上的数百个功能和400多个表。作为一个ORM工具,我们采用了依赖注入的原则,也采用了DAO数据访问对象模式来存储对每个实体类的查询,换句话说,每个表都有一个实体类,每个实体类都有一个DAO类

我不知道这是否正常,但问题是DAO类的规模越来越大,有些已经有30多个方法,每个方法代表一个查询或业务规则

我们正在尝试以更普遍和参数化的方式创建方法,而且,所有DAO类都是AbstractDAO类的子类,AbstractDAO类已经实现并提供了插入、更新、查找、列表等通用方法


你有什么建议吗?一些技术、模式或工具,用于更紧密地压缩代码,或者至少更好地组织代码?

如果不查看代码和您正在执行的查询类型,很难说清楚

我喜欢DAO方法的另一种选择是每个查询有一个类,这应该允许您在这些查询上有一些行为,从而减少最终得到的类的数量。当然,在最坏的情况下,如果您有500个查询,您将以500个新类结束,这可能远远不够理想

根据经验,这500个查询中的许多都有许多共同点,相同的查询但有一个额外的参数,相同的查询但有分页,等等。如果这与您的情况相符,您可以使您的查询成为一个生成器,以重用大部分代码。此外,您还可以将某些常见内容移动到基本查询类等

另一个优点是,当您需要添加新的查询时,您只需不断添加类,而不需要触及已经很大的单一DAO


看到我不久前问的这个问题,是针对c的,但同样的概念应该延续到php:

@tereško我的应用程序的数据库实际上是一个遗留问题,因为几年前我们开始使用php结构化应用程序。无论哪种方式,我们的应用程序也非常大,因为与ERP相比,您的业务线非常大。