代码之家  ›  专栏  ›  技术社区  ›  pigfox

Kohana 3自动装载模型

  •  4
  • pigfox  · 技术社区  · 14 年前

    我试图使用一个模型,但我得到了一个致命的错误,所以我假设它不能正确地自动加载。

    ErrorException[致命错误]:类 找不到“属性\模型”

    违规控制器线路:

    $properties = new Properties_Model;
    

    模型:

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

    我也把这门课放在三个不同的地方,希望其中一个能奏效,但都失败了。 他们是: 应用程序/类/模型 应用/型号 应用程序/模型

    我错过了什么?

    2 回复  |  直到 14 年前
        1
  •  6
  •   alex    14 年前

    啊,我直接收到这个问题的电子邮件(通过我的网站的联系方式)!

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

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

    application/classes/model/properties.php
    

    类的定义是 跟随

    class Model_Properties extends Model { }
    

    把上面的下划线想象成 目录分隔符。也就是说,如果你 将下划线替换为a/you 将具有:“模型/属性”,其中 会是你的档案 application/classes .

    要从控制器加载模型, 您可以使用php的标准new 接线员或者做我喜欢做的事

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

    我不是100%为什么我喜欢这样… 但它对我有用:)

        2
  •  2
  •   Matt    14 年前

    首先, Kohana3文件系统不能像Kohana2那样工作!

    在k2中,autoloader查看类名,根据类的后缀搜索不同文件夹中的类。

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

    Class Properties_Model 变成 classes/properties/model.php

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

    Model_Property 位于 classes/model/property.php

    有关更多信息,请参阅 Kohana 3 userguide