gpt4 book ai didi

codeigniter - 为什么 Codeigniter 有一个只有构造函数和 get 的 Model 类?

转载 作者:行者123 更新时间:2023-12-01 01:01:57 24 4
gpt4 key购买 nike

有人能告诉我为什么 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");
}

但是它很有用,因为假设您正在调用 Controller 中的模型,该模型由于某种原因不起作用。
$this->load->model('Model_name');
$this->Model_name->function();

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

utilized for reading data from inaccessible properties.



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

关于codeigniter - 为什么 Codeigniter 有一个只有构造函数和 get 的 Model 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22537315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com