4

我正在尝试使用模型,但出现致命错误,因此我认为它无法正确自动加载。

ErrorException [致命错误]:找不到类“Properties_Model”

有问题的控制器线:

$properties = new Properties_Model;

该模型:

class Properties_Model extends Model
{
    public function __construct()
    {
          parent::__construct();
    }

}

我还将课程放在三个不同的位置,希望一个可以工作,但都失败了。它们是:应用程序/类/模型应用程序/模型应用程序/模型

我错过了什么?

4

2 回答 2

6

啊,我收到了这个问题直接通过电子邮件发送给我(通过我网站的联系表)!

这是我的回应(为了其他可能遇到此问题的人的利益)。

名为 属性的模型的正确位置是

application/classes/model/properties.php

并且类定义如下

class Model_Properties extends Model { }

将上面的下划线视为目录分隔符。也就是说,如果你用 / 替换下划线,你会得到:'model/properties',这将是你在application/classes.

要从控制器加载模型,您可以使用 PHP 的标准 new 运算符或执行我喜欢的操作,即

$propertiesModel = Model::factory('Properties');

我不是 100% 为什么我更喜欢这种方式……但它对我有用:)

于 2010-05-23T14:18:30.970 回答
2

首先,Kohana 3 文件系统不像 Kohana 2 那样工作!

在 K2 中,自动加载器查看类名,根据类的后缀在不同文件夹中搜索类。

在 K3 中,类名通过用斜杠替换下划线来“转换”为文件路径。

Class Properties_Model变成classes/properties/model.php

如您所见,在这个新系统中使用模型后缀并不能真正帮助您对模型进行分组,因此基本上您将“模型”添加到类名而不是后缀:

Model_Property位于classes/model/property.php

有关详细信息,请参阅Kohana 3用户指南

于 2010-05-22T19:07:57.330 回答