0

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

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

提前致谢

阿德里安

4

1 回答 1

0

ndm 在这方面帮助了我很多(请参阅对我的问题的评论),但由于他没有发布答案,我现在正在这样做。


ValueBinder可以通过在我的查询中设置来使用自己的: $this->Table->find()->valueBinder(myOwnValueBinder).

为了在我自己的代码中使其成为默认的 ValueBinder(在大多数情况下就足够了),可以使用例如AppTableCakePHP 2 中已知的扩展到Table并使所有其他*Table类扩展 的类AppTable。现在只需要创建以下方法:

public function query() {
    return parent::query()->valueBinder(myOwnValueBinder);
}

如果需要所有代码都使用 custom ValueBinder,则必须创建(并使用)扩展的数据源 Connection 类。在这个类Connection::newQuery()中必须被覆盖。

于 2016-03-10T12:04:40.333 回答