在模型(.php)文件的类声明行中,我试图扩展另一个类,然后AppModel
。假设我有一些模型,包括Model
,ModelOrder
和ModelLastShipment
等等。是的,“模型”是为了概括而组成的名称。
Model
不使用表,也没有任何表关联。它扩展了AppModel
。它有一些基本功能,我希望ModelOrder
和ModelLastShipment
(和其他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
?
如果有更多信息需要解决此问题,请与我们联系。有很多关于这种错误的文章和帖子,但我还没有找到为什么我为一个错误而不是另一个错误。
答案 0 :(得分:1)
假设我有一些模型,包括模型
Model是核心课程。如果你创建一个名为Model的类,那么它不会被加载(因为类Model
已经存在)或导致致命的行为 - 可能是“随机”。
问题中的类结构是:
Overloadable (Cake)
Model (Cake)
AppModel (App)
Model (App) <- problem
那不行。类名必须是唯一的,Model
是核心类。
在声明解决此问题之前包括include_once('model.php')
这些模型类名是否组成?如上所述,这对于名为Model
的类来说是不可能的。
这些是Cake 1.3中自动加载的唯一模型类:
如果模型的类层次结构中有更多的中间类 - 需要明确加载它们:
<?php
App::import('Model', 'SomethingElse');
class NotNamedModel extends SomethingElse {