昀羲 发表于 2017-5-22 03:34:58

菜鸟初学CI,看中文手册教程,有一处不明白,求教~~

菜鸟一枚,正在学习3.1.4版本的CI,正在研究其中的那个“新闻系统”,其中定义的那个class News_model的构造函数,看不明白是什么意思
CI_3.1.4 中文手册-新闻系统



<?php
class News_model extends CI_Model {
        public function __construct()
        {
                $this->load->database();      //    这个类里面, 哪个地方定义了“load”啊? 怎么能这样引用呢?
               
        }
        public function get_news($slug = FALSE)
        {
                if ($slug === FALSE)
                {
                        $query = $this->db->get('news');
                        return $query->result_array();
                }
                $query = $this->db->get_where('news', array('slug' => $slug));
                return $query->row_array();
        }








Hex 发表于 2017-5-22 10:14:38

这是框架帮你定义的 load,如果什么都要你去做,那还是框架吗?具体参考 http://codeigniter.org.cn/user_guide/libraries/loader.html 这是关于 load 的使用说明。
另外,中文手册只是告诉你如何使用 CI,而如果你想了解 CI 的内部细节,你需要看源码,或者看一些源码解析的文章,并且论坛里也有一本书详细讲解了内部细节。

昀羲 发表于 2017-5-22 10:56:21

Hex 发表于 2017-5-22 10:14
这是框架帮你定义的 load,如果什么都要你去做,那还是框架吗?具体参考 http://codeigniter.org.cn/user_g ...

哪本书呢,求种子,不对,求链接~~

昀羲 发表于 2017-5-22 11:01:12

Hex 发表于 2017-5-22 10:14
这是框架帮你定义的 load,如果什么都要你去做,那还是框架吗?具体参考 http://codeigniter.org.cn/user_g ...
就算是划框架帮定义的load,在使用时也应该遵循PHP的规则啊~~
在类里没有定义过的,怎么能通过$this->来引用呢?
想不通。。。。一定是使用到了php里我不了解决的高级的规则

Hex 发表于 2017-5-22 11:03:39

昀羲 发表于 2017-5-22 11:01
就算是划框架帮定义的load,在使用时也应该遵循PHP的规则啊~~
在类里没有定义过的,怎么能通过$this->来引 ...
简单说就是在执行你输入的代码以前,框架做了很多很多的工作,其中就有引入 loader.php 这个类,具体都做了什么你可以看一下源码,从 core 目录下的 CodeIgniter.php 开始看。

很多时候,你看到的只是表面现象,一个框架或者一个类库,背后都是做了很多你看不到的工作,这样才能简化你的开发,否则这些事情都是要你自己一个字母一个字母实现的。

Hex 发表于 2017-5-22 11:04:04

昀羲 发表于 2017-5-22 10:56
哪本书呢,求种子,不对,求链接~~

http://codeigniter.org.cn/forums/forum.php?mod=viewthread&tid=1464&extra=page%3D1

红尘困住年少 发表于 2017-5-22 11:17:23

News_model 继承了CI_Model中的魔术方法__get(),当访问不存在的属性时 会自动调用该方法
        /**
       * __get magic
       *
       * Allows models to access CI's loaded classes using the same
       * syntax as controllers.
       *
       * @param        string        $key
       */
        public function __get($key)
        {
                // Debugging note:
                //        If you're here because you're getting an error message
                //        saying 'Undefined Property: system/core/Model.php', it's
                //        most likely a typo in your model code.
                return get_instance()->$key;
        }

所以这里的load 其实是相当于 调用了get_instance()->load
页: [1]
查看完整版本: 菜鸟初学CI,看中文手册教程,有一处不明白,求教~~