我正在尝试创建SQL查询对象的层次结构。我的基类将命名为Query。它将具有类似Query.setTable("tableName")的方法。

然后,我计划让SelectiveQuery对象扩展Query对象。该对象将具有类似SelectiveQuery.where("aColumn","=","123")的方法。

然后,我计划将UpdateQuerySelectQueryDeleteQueryCountQuery都扩展为SelectiveQuery。当我试图弄清楚如何创建InsertQuery类时,我会陷入困境。我希望它扩展查询,但不扩展SelectiveQuery

更重要的是,InsertQueryUpdateQuery将共享某些相同的方法,例如setValue("aColumn","aValue")。我宁愿仅将UpdateQueryInsertQuery的方法保持在一个位置。我该如何解决?如果我在PHP中编程。我想我会用特质来做到这一点。

最佳答案

您可以用mixin代替继承,即引入另一个类(例如Columns),InsertQuery和SelectiveQuery将把该类作为成员,因此语法为insertQuery.columns().setValue("aColumn", "aValue")。另外,在这里查看:querydsl

10-05 23:09