这可能是一个愚蠢的问题,但我对CakePHP 2.3有一种奇怪的行为。
在我的模型中,我定义了一些常量:
class ImageSpecification extends AppModel {
public $name = 'ImageSpecification';
const THUMBNAIL = 1;
const NORMAL = 2;
const HIDEF = 3;
const EXTRA = 4;
[...]
}
在ImagesController
中,我执行了App:uses('ImageSpecification', 'Model')
,我可以在使用ImageSpecification
后成功加载$this->loadModel('ImageSpecification')
个数据。但是,一旦我使用常量(即:ImageSpecification::THUMBNAIL
),它就会失败并且我有错误:
致命错误:第2行的../app/Model/ImageSpecification.php中找不到“AppModel”类
AppModel.php
位于/app/Model
目录中。在不更改任何代码的情况下,其他模型工作正常,如果我直接使用常量值而不是使用常量,ImageSpecification
/ ImagesController
一切都很好。那么,这里的问题是什么? PHP中的语言或语法错误?
答案 0 :(得分:0)
这是因为您的模型设置不正确。 您缺少一些重要的App :: uses()调用。 在您的情况下,可能在顶部的模型类中:
App::uses('AppModel', 'Model');
class ImageSpecification extends AppModel {...}
您需要始终在顶部的文件中包含所有使用的类。 不这样做会让你陷入困境 - 正如你刚刚体验过的那样。
对于您的控制器也是如此,如果您想要在尚未加载模型的情况下访问模型常量。 那么你需要在控制器的顶部,当然:
App:uses('ImageSpecification', 'Model')
然后你就可以毫无问题地访问常量了(你不必为它加载或初始化类)。
答案 1 :(得分:-1)
A)您可以改为使用对象实例,而不是类
B)您可以使用App::import
来加载类而不是它的实例。