菜鸟初学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();
}
这是框架帮你定义的 load,如果什么都要你去做,那还是框架吗?具体参考 http://codeigniter.org.cn/user_guide/libraries/loader.html 这是关于 load 的使用说明。
另外,中文手册只是告诉你如何使用 CI,而如果你想了解 CI 的内部细节,你需要看源码,或者看一些源码解析的文章,并且论坛里也有一本书详细讲解了内部细节。
Hex 发表于 2017-5-22 10:14
这是框架帮你定义的 load,如果什么都要你去做,那还是框架吗?具体参考 http://codeigniter.org.cn/user_g ...
哪本书呢,求种子,不对,求链接~~ Hex 发表于 2017-5-22 10:14
这是框架帮你定义的 load,如果什么都要你去做,那还是框架吗?具体参考 http://codeigniter.org.cn/user_g ...
就算是划框架帮定义的load,在使用时也应该遵循PHP的规则啊~~
在类里没有定义过的,怎么能通过$this->来引用呢?
想不通。。。。一定是使用到了php里我不了解决的高级的规则 昀羲 发表于 2017-5-22 11:01
就算是划框架帮定义的load,在使用时也应该遵循PHP的规则啊~~
在类里没有定义过的,怎么能通过$this->来引 ...
简单说就是在执行你输入的代码以前,框架做了很多很多的工作,其中就有引入 loader.php 这个类,具体都做了什么你可以看一下源码,从 core 目录下的 CodeIgniter.php 开始看。
很多时候,你看到的只是表面现象,一个框架或者一个类库,背后都是做了很多你看不到的工作,这样才能简化你的开发,否则这些事情都是要你自己一个字母一个字母实现的。
昀羲 发表于 2017-5-22 10:56
哪本书呢,求种子,不对,求链接~~
http://codeigniter.org.cn/forums/forum.php?mod=viewthread&tid=1464&extra=page%3D1 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]