添加(或重写)cakePHP 中的核心类方法

问题描述 投票:0回答:3

我们使用 cakePHP 2.7.x。

我的问题是重写核心类——或者专门向方法添加功能而不修改核心代码。

我需要向该方法添加一些功能:

cake/lib/Cake/Model/Datasource/DboSource->BuildColumn()

文档说将整个类放在应用程序下的同一位置,然后应用程序加载器将加载它。所以我将课程复制到

marketplace/Model/Datasource/DboSource
并添加了我的代码片段。不幸的是一切都没有改变。

如果我将更改直接添加到原始方法中,则一切正常。

背景: 在该方法中,所有默认值都会被不加区别地引用。因此,类似

DEFAULT CURRENT_TIMESTAMP
的内容被解释为
DEFAULT 'CURRENT_TIMESTAMP'
并运行,这显然无法按预期工作。 具体来说,当我尝试蛋糕烘焙固定装置时,它给了我错误
"Syntax error or access violation: 1067 Invalid default value for 'created'"

我被引导到问题的原因,以及 cakePHP 1.2.6 的建议修复,在这里: http://mamchenkov.net/wordpress/2010/04/21/unit-tests-with-cakephp/

php datasource cakephp-2.7
3个回答
1
投票

根据文档

您可以重写框架中的几乎每个类,例外情况是 应用程序和配置类。每当你喜欢表演这样的 覆盖,只需将您的类添加到您的 app/Lib 文件夹中,模仿 框架内部结构

所以路径应该是

marketplace/Lib/Model/Datasource/DboSource
,而不是
marketplace/Model/Datasource/DboSource


0
投票

很明显我的流浪机器出了问题。重新启动后,按照 Bruno Ferriera 概述的操作完美运行!


0
投票

注意,如果是DboSorce,它是有缓存的,所以你必须删除缓存!

© www.soinside.com 2019 - 2024. All rights reserved.