0

这可能是一个愚蠢的问题,但我对 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中的语言或语法错误?

4

2 回答 2

0

那是因为您的模型设置不正确。您缺少一些重要的 App::uses() 调用。在您的情况下,可能在顶部的模型类中:

App::uses('AppModel', 'Model');

class ImageSpecification extends AppModel {...}

您需要始终在顶部的文件中包含所有使用的类。不这样做会给你带来麻烦——就像你刚刚经历的那样。

如果您想在尚未加载模型的情况下访问模型常量,那么您的控制器也是如此。然后,您当然需要在控制器顶部使用它:

App:uses('ImageSpecification', 'Model')

然后您将能够毫无问题地访问常量(您不必为它加载或初始化类)。

于 2013-10-05T23:40:00.880 回答
-1

A)您可以只使用对象实例,而不是类

B)您可以改用App::import加载类而不是它的实例。

于 2013-10-05T18:22:13.303 回答