我想覆盖CakePHP 3核心中存在的一个函数(更具体的Cake\Database\ValueBinder
)。
我怎样才能做到这一点?我尝试将类复制到src/Database/
并将命名空间从Cake更改为App。我使用了AppController
中的课程,但没有运气。
提前致谢
阿德里安
答案 0 :(得分:0)
ndm对此帮助很大(请参阅我的问题的评论),但由于他没有发表答案,我现在正在这样做。
可以通过在我的查询中设置ValueBinder
来使用自己的$this->Table->find()->valueBinder(myOwnValueBinder)
。
为了使我自己的代码中的默认ValueBinder(在大多数情况下足够),可以使用例如CakePHP 2中已知的AppTable
扩展到Table
并使所有其他*Table
类扩展AppTable
。现在只需要创建以下方法:
public function query() {
return parent::query()->valueBinder(myOwnValueBinder);
}
如果需要所有代码都使用自定义ValueBinder
,则必须创建(并使用)扩展数据源Connection类。在此课程中,必须覆盖Connection::newQuery()
。