-2

在模型(.php)文件的类声明行中,我试图扩展另一个类 then AppModel。假设我有一些模型,包括ModelModelOrderModelLastShipment等。是的,“模型”是为了概括起见而编造的名称。

Model不使用表,也没有任何表关联。它延伸AppModel. 它有一些我想要ModelOrderModelLastShipment(和其他Model...类)继承的基本功能。问题是虽然ModelOrder可以扩展(即class ModelOrder extends Model {...}),但由于缺少文件错误,我无法对以下内容执行相同操作。

model_last_shipment.php:

class ModelLastShipment extends Model {...}

这将返回错误,

Fatal error: Class 'Model' not found in C:\xampp\htdocs\my_app\app\models\model_last_shipment.php on line 3

包括include_once('model.php')在声明之前解决了这个问题,但是为什么扩展在ModelOrder没有明确包含的情况下工作而不是ModelLastShipment呢?

如果需要更多信息来解决此问题,请告诉我。有很多关于这种错误的文章和帖子,但我还没有弄清楚为什么我会得到这个错误,而不是另一个。

4

1 回答 1

1

假设我有一些模型,包括模型

不可能创建一个名为“模型”的类

模型是一个核心类。如果您创建一个名为 Model 的类,它要么不会被加载(因为该类Model已经存在),要么会导致致命行为 - 可能是“随机的”。

问题中的类结构是:

Overloadable (Cake)
    Model (Cake)
        AppModel (App)
            Model (App) <- problem

那是行不通的。类名必须是唯一的并且Model是核心类。

在声明之前包含 include_once('model.php') 解决了这个问题

这些模型类名称是组成的吗?如上所述,对于名为Model.

中间类模型不会自动加载

这些是在 Cake 1.3 中自动加载的唯一模型类:

  • 模型
  • 应用模型
  • AppModel(适当时)

如果您的模型的类层次结构中有更多的中间类 - 它们需要显式加载:

<?php
App::import('Model', 'SomethingElse');

class NotNamedModel extends SomethingElse {
于 2013-07-09T08:11:22.513 回答