【发布时间】:2016-03-08 20:33:04
【问题描述】:
我想重写存在于 CakePHP 3 核心中的一个函数(更具体地说是Cake\Database\ValueBinder)。
我怎样才能做到这一点?我尝试将类复制到 src/Database/ 并将命名空间从 Cake 更改为 App。我使用了AppController 中的课程,但没有运气。
提前致谢
阿德里安
【问题讨论】:
-
对我来说,这听起来好像你真的不知道你真正想要做什么。如果您通过“覆盖核心类”来描述您试图解决的实际问题,您很可能会得到更好的帮助
-
@ndm 感谢您的回答,但我有一个用例,我确实需要覆盖这个特定的类。可悲的是,您的回答既没有帮助也没有回答我的问题。
-
我很确定您实际上不需要这样做(自定义/扩展值绑定器可以分配给开箱即用的查询对象)。但是,无论如何,您都应该解释您的用例,以便任何人都能给您正确的答案。
-
@ndm 听起来更像。我没有在 CakePHP Book / API 中找到使用自己的值绑定器的选项。这个怎么做?我可以将自己的值绑定器设置为默认值绑定器吗?
-
是的,您可以通过创建一个扩展的 Query 类来覆盖 valueBinder() 方法。可以通过重写 Table::query() 将自定义查询类设为默认值。如果您也需要影响较低级别的访问权限,则需要创建(并使用)扩展数据源 Connection 类并覆盖 Connection::newQuery()。
标签: cakephp cakephp-3.x cakephp-3.2