【问题标题】:Kohana 3 Auto loading ModelsKohana 3 自动加载模型
【发布时间】:2010-05-22 16:47:29
【问题描述】:

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

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

有问题的控制器线:

$properties = new Properties_Model;

型号:

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

}

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

我错过了什么?

【问题讨论】:

    标签: kohana kohana-3 autoload


    【解决方案1】:

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

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

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

    application/classes/model/properties.php
    

    类定义如下 关注

    class Model_Properties extends Model { }
    

    将上面的下划线视为 目录分隔符。也就是说,如果你 用 / you 替换下划线 将有:“模型/属性”,其中 将是您在application/classes 下的文件。

    要从控制器加载模型, 你可以使用 PHP 的标准 new 运营商或做我喜欢的,这是

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

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

    【讨论】:

    • 这是一种更加 Kohana 的实例化新模型的方式,这就是为什么我更喜欢这种 Model::factory() 做事方式的原因。此外,您不必控制对象的实例化方式,您可以将其留给 Kohana。
    【解决方案2】:

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

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

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

    Class Properties_Model 变为 classes/properties/model.php

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

    Model_Property位于classes/model/property.php

    欲了解更多信息,请参阅Kohana 3 userguide

    【讨论】:

      猜你喜欢
      • 2012-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-23
      相关资源
      最近更新 更多