CakePHP 1.3:扩展类无法找到其父模型PHP文件

时间:2013-07-08 23:25:34

标签: cakephp cakephp-1.3

在模型(.php)文件的类声明行中,我试图扩展另一个类,然后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而没有明确的inlcusion而不适用于ModelLastShipment

如果有更多信息需要解决此问题,请与我们联系。有很多关于这种错误的文章和帖子,但我还没有找到为什么我为一个错误而不是另一个错误。

1 个答案:

答案 0 :(得分:1)

  

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

创建名为“Model”的类

是不可能的

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

问题中的类结构是:

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

那不行。类名必须是唯一的,Model是核心类。

  

在声明解决此问题之前包括include_once('model.php')

这些模型类名是否组成?如上所述,这对于名为Model的类来说是不可能的。

不会自动加载中级班级模型

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

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

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

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

class NotNamedModel extends SomethingElse {