我正在使用战略模式来实现一个大致如此的PHP项目。我一直在阅读this book作为制作设计模式的参考。
我可以使用"插入","搜索","更新"从数据库进行简单的插入,更新或提取。 单个表上的具体策略类。
然而,对于像
如何创建一个允许我检索自定义编号的策略类。使用JOIN或VIEWs来自两个或多个表的列? 或者我应该使用存储过程吗?
目前,每个具体的策略类都如下所示:
interface IStrategy {
public function algorithm(AbstractModel $modelObj, $tablename);
}
class InsertStrategy implements IStrategy{
public function algorithm(AbstractModel $modelObj, $tablename){
// construct SQL statement
// Initialize the Database Object
// Insert data using PDO
}
}
答案 0 :(得分:0)
我通常运行工厂业务应用程序的方法是避免使用“表API”方法并使用存储过程创建“数据API”。您也可以使用视图来支持您的SP。
因此,而不是CRUD,编写为您的业务层提供有用数据块的SP。完成您在SP中可以使用的所有过滤器,组,排序等,并获取PHP业务层来执行业务。您通常可以通过常用的数据访问层(或者想象中的ORM)访问所有SP。
在SP后面分离数据准备类似于将业务层隐藏在服务之后。所有原因和好处都叠加在一起。