为什么Codeigniter具有仅包含构造函数和get的Model类?

强尼

谁能告诉我为什么Codeigniter的Model类几乎是空的?该设计完成什么工作?

1: <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 2: /**
 3:  * CodeIgniter
 4:  *
 5:  * An open source application development framework for PHP 5.1.6 or newer
 6:  *
 7:  * @package     CodeIgniter
 8:  * @author      ExpressionEngine Dev Team
 9:  * @copyright   Copyright (c) 2008 - 2011, EllisLab, Inc.
10:  * @license     http://codeigniter.com/user_guide/license.html
11:  * @link        http://codeigniter.com
12:  * @since       Version 1.0
13:  * @filesource
14:  */
15: 
16: // ------------------------------------------------------------------------
17: 
18: /**
19:  * CodeIgniter Model Class
20:  *
21:  * @package     CodeIgniter
22:  * @subpackage  Libraries
23:  * @category    Libraries
24:  * @author      ExpressionEngine Dev Team
25:  * @link        http://codeigniter.com/user_guide/libraries/config.html
26:  */
27: class CI_Model {
28: 
29:     /**
30:      * Constructor
31:      *
32:      * @access public
33:      */
34:     function __construct()
35:     {
36:         log_message('debug', "Model Class Initialized");
37:     }
38: 
39:     /**
40:      * __get
41:      *
42:      * Allows models to access CI's loaded classes using the same
43:      * syntax as controllers.
44:      *
45:      * @param   string
46:      * @access private
47:      */
48:     function __get($key)
49:     {
50:         $CI =& get_instance();
51:         return $CI->$key;
52:     }
53: }
54: // END Model Class
55: 
56: /* End of file Model.php */
57: /* Location: ./system/core/Model.php */

我看到了__get函数,但是我不确定这样做对我有帮助。扩展此类将对我的设计有何帮助?

39:     /**
40:      * __get
41:      *
42:      * Allows models to access CI's loaded classes using the same
43:      * syntax as controllers.
44:      *
45:      * @param   string
46:      * @access private
47:      */
48:     function __get($key)
49:     {
50:         $CI =& get_instance();
51:         return $CI->$key;
52:     }
桶装

因此,每当扩展CI_Model类时,您的模型都将继承__construct__get函数,两者都是Magic Methods

__construct每当你在模型中调用一个函数功能将被调用。它所做的只是创建一条日志消息。

function __construct()
{
    log_message('debug', "Model Class Initialized");
}

但是它很有用,因为说您在控制器中调用模型,由于某种原因它无法正常工作。

$this->load->model('Model_name');
$this->Model_name->function();

至少您将能够检查日志以查看是否已加载模型-对调试很有用。

__get方法用于

用于从无法访问的属性读取数据。

同样,这很有用,因为它将允许您访问模型中的任何CI库例如,您将能够在模型-中使用会话库$this->session->userdata('username')如果没有__get函数CI_Model尝试访问模型中的会话库,则会出错。但是,通过扩展CI_Model它不会。所以记住这是非常有用的

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么Codeigniter具有仅包含构造函数和get的Model类?

来自分类Dev

Android:为什么Color类具有公共构造函数?

来自分类Dev

具有空构造函数的Stateless类和Static类之间有什么区别?

来自分类Dev

为什么不允许从具有私有构造函数的类继承

来自分类Dev

为什么Gradle仅包含我的库中具有项目依赖项的类

来自分类Dev

为什么即使我的抽象类具有受保护的构造函数,也要创建默认构造函数?

来自分类Dev

当基类具有带参数的构造函数时,为什么不能创建无参数子类构造函数?

来自分类Dev

为什么使用声明生成的构造函数具有与基类相同的访问级别?

来自分类Dev

为什么使用声明生成的构造函数具有与基类相同的访问级别?

来自分类Dev

为什么带有用户声明的析构函数的类具有隐式默认构造函数?

来自分类Dev

为什么同时具有params和muti-object构造函数?

来自分类Dev

为什么在此类中复制构造函数,operator =和引用具有编译问题

来自分类Dev

为什么在此类中复制构造函数,operator =和引用具有编译问题

来自分类Dev

为什么构造函数中的全局变量和参数变量不能具有相同的名称?

来自分类Dev

为什么JComboBox和ComboBoxModel类没有List或Collection构造函数?

来自分类Dev

构造函数和类函数有什么区别

来自分类Dev

具有模板和非模板构造函数的类

来自分类Dev

为什么抽象类可以有构造函数?

来自分类Dev

为什么Calendar类没有公共构造函数?

来自分类Dev

为什么没有调用 Cups 类的构造函数?

来自分类Dev

为什么会出现“类必须具有一个(只有一个)构造函数”错误?

来自分类Dev

具有移动构造函数和分配的类的默认副本构造函数和分配

来自分类Dev

如果不在子类中创建子类对象,为什么父类必须具有默认构造函数?

来自分类Dev

为什么super()仅调用类Parent1的构造函数而不调用类Parent2的构造函数?

来自分类Dev

为什么默认构造函数和参数化构造函数都在一个类中?

来自分类Dev

具有模板化构造函数以及复制和移动构造函数的类

来自分类Dev

具有可变构造函数的模板类以不同的方式实现:每个版本的优点和缺点是什么?

来自分类Dev

为什么空的lambda和具有显式返回的构造函数会导致编译器错误(Java Bug?)

来自分类Dev

具有空构造函数的Stateless类与Static类之间有什么区别?

Related 相关文章

  1. 1

    为什么Codeigniter具有仅包含构造函数和get的Model类?

  2. 2

    Android:为什么Color类具有公共构造函数?

  3. 3

    具有空构造函数的Stateless类和Static类之间有什么区别?

  4. 4

    为什么不允许从具有私有构造函数的类继承

  5. 5

    为什么Gradle仅包含我的库中具有项目依赖项的类

  6. 6

    为什么即使我的抽象类具有受保护的构造函数,也要创建默认构造函数?

  7. 7

    当基类具有带参数的构造函数时,为什么不能创建无参数子类构造函数?

  8. 8

    为什么使用声明生成的构造函数具有与基类相同的访问级别?

  9. 9

    为什么使用声明生成的构造函数具有与基类相同的访问级别?

  10. 10

    为什么带有用户声明的析构函数的类具有隐式默认构造函数?

  11. 11

    为什么同时具有params和muti-object构造函数?

  12. 12

    为什么在此类中复制构造函数,operator =和引用具有编译问题

  13. 13

    为什么在此类中复制构造函数,operator =和引用具有编译问题

  14. 14

    为什么构造函数中的全局变量和参数变量不能具有相同的名称?

  15. 15

    为什么JComboBox和ComboBoxModel类没有List或Collection构造函数?

  16. 16

    构造函数和类函数有什么区别

  17. 17

    具有模板和非模板构造函数的类

  18. 18

    为什么抽象类可以有构造函数?

  19. 19

    为什么Calendar类没有公共构造函数?

  20. 20

    为什么没有调用 Cups 类的构造函数?

  21. 21

    为什么会出现“类必须具有一个(只有一个)构造函数”错误?

  22. 22

    具有移动构造函数和分配的类的默认副本构造函数和分配

  23. 23

    如果不在子类中创建子类对象,为什么父类必须具有默认构造函数?

  24. 24

    为什么super()仅调用类Parent1的构造函数而不调用类Parent2的构造函数?

  25. 25

    为什么默认构造函数和参数化构造函数都在一个类中?

  26. 26

    具有模板化构造函数以及复制和移动构造函数的类

  27. 27

    具有可变构造函数的模板类以不同的方式实现:每个版本的优点和缺点是什么?

  28. 28

    为什么空的lambda和具有显式返回的构造函数会导致编译器错误(Java Bug?)

  29. 29

    具有空构造函数的Stateless类与Static类之间有什么区别?

热门标签

归档