覆盖Cakephp 3核心类

时间:2016-03-08 20:33:05

标签: cakephp cakephp-3.x cakephp-3.2

我想覆盖CakePHP 3核心中存在的一个函数(更具体的Cake\Database\ValueBinder)。

我怎样才能做到这一点?我尝试将类复制到src/Database/并将命名空间从Cake更改为App。我使用了AppController中的课程,但没有运气。

提前致谢

阿德里安

1 个答案:

答案 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()