我正在尝试创建SQL查询对象的层次结构。我的基类将命名为 Query。它将具有类似的方法Query.setTable("tableName")。
然后我打算让一个SelectiveQuery对象扩展 Query 对象。该对象将具有类似的方法SelectiveQuery.where("aColumn","=","123")。
然后我计划让UpdateQuery, SelectQuery, DeleteQuery, 和CountQuery所有扩展SelectiveQuery。当我试图弄清楚如何创建InsertQuery类时,我的困境就出现了。我希望它扩展 Query 但不扩展SelectiveQuery。
最重要的是,InsertQuery它将UpdateQuery共享一些相同的方法,例如setValue("aColumn","aValue"). 我宁愿只维护这些方法UpdateQuery并且InsertQuery在一个位置有共同点。我该如何解决这个问题?如果我在PHP. 我想我会使用 Traits 来做到这一点。
