CI框架学习笔记第一天

此文章为自己书写,在Word上做的笔记,然后拷贝到这上边的,无任何抄袭。另外若是程序有任何问题可以评论,也可私信我。
若是想看整个学习笔记代码和数据库可点击此处(包含个人书写的项目代码及数据库文件)。

学习目标

使用CI框架开发商城(前台和后台)。

CI简单介绍

小巧,快速。
相对于学习其他框架,更容易掌握。

CI快速入门

获取与安装:
在官网下载:http://codeigniter.org.cn/
将下载好的文件解压到工程目录下:
CI框架学习笔记第一天_第1张图片
直接访问:http://localhost/citest/
CI框架学习笔记第一天_第2张图片
看到此界面表示安装成功。
定义自己的视图和控制器:
CI框架学习笔记第一天_第3张图片
其中user_guide文件夹删除.
重点关注application文件夹
CI框架学习笔记第一天_第4张图片
控制器说白了就是一个类文件,并要继承CI_Controller,此时我们要借鉴ci自己提供的welcome.php文件。
关于命名规范的问题,如果我们使用别人的框架,尽量要遵守别人制定的规范:
 类名的首字母应该大写,如果名称由多个词组成,词之间用下划线分开。
 类中所有其他方法的名字小写,多个单词之间用下划线。
 类文件名使用小写
定义hello控制器,有一个方法,index
访问:涉及到ci的url模式
CI默认支持的url模式是pathinfo形式,也就是使用/隔开。
例如:http://localhost/citest/index.php/hello/index
其中http://localhost/citest/index.php/是固定的,代表入口文件,而后面的hello表示是控制器,index表示的是控制器中的方法。
在控制器中必须加入这一句:
defined(‘BASEPATH’) or exit(‘No direct script access allowed’);
这句话的作用是:为了防止跨站攻击,直接通过访问文件路径用的
CI框架学习笔记第一天_第5张图片
视图文件应该放在view目录下:
CI框架学习笔记第一天_第6张图片
在控制器中调用视图。
使用$this->load->view(“视图名”);即可。
上面的操作只是简单的将html页面展示出来。而实际上是在控制器中经常获得数据传送到视图当中。使用load->view方法的第二个参数分配数据即可。
CI框架学习笔记第一天_第7张图片
在视图中进行调用。
CI框架学习笔记第一天_第8张图片
在CI框架中,模板语法是什么样的?CI使用的是原生的PHP语法,效率高。
在视图中直接使用 title使 data[‘title’],需要注意,CI他使用了一个extract函数,将数组中变量导入当前符号表当中,所以直接使用键名作为变量名访问。

必须清楚的几个概念

框架开发和二次开发
打个比方:买房子
买二手房,直接拎包入住。好比是二次开发,dedecms、phpcms、echshop
买新房,一开始不能住人,自己去买各种专修材料进行装修,才能入住。好比是框架开发,只提供了基础的功能。
CI是框架,用于框架开发。
MVC
M:model模型,一般是直接操作数据库的
V:view模型,一般是指模版文件,比如html页面,用于展示数据的
C:controller,控制器,扮演了交通警察的身份,接受请求,然后调用相应的模型来完成工作,获取数据,最后分配到视图。
CI框架也是一个MVC框架。使用CI框架开发时,大部分工作就是在MVC这部分。

MVC完整案例

使用mvc完成新闻的一组增删改查操作。
书写一个news控制器。

CI框架学习笔记第一天_第9张图片
CI操作数据库
1、数据库相关配置,在config/database.php
CI框架学习笔记第一天_第10张图片

2、连接数据库
CI提供了专门的数据库操作类,有两种方式,只需要加载该类即可。
手动载入:在需要使用数据库操作类的地方,使用$this->load->database()即可,比如在模型中载入。
自动载入:在config下面的autoload.php的配置文件中,$autoload['libraries'] = array(‘database’);即可。

CI框架学习笔记第一天_第11张图片

3、操作
定义news模型
定义Model时的书写规范:Model_name是模型类的名字。类名的首字母必须大写,其他字母小写。
文件名是类名的小写版。

CI框架学习笔记第一天_第12张图片
如何使用数据库操作类进行操作呢?
当我们连接了数据库之后,可以使用 this>db this->db->query(sql语句);方法。
如果直接使用query方法,是比较麻烦的。每次还得自己来拼凑sql语句,更希望有一个能够自动完成增删改查的功能的方法。CI中也提供了一个类叫做active record,也叫AR。最基础的一组操作如下:
this>db>insert(); this->db->update();
this>db>delete(); this->db->get();
完成添加新闻
在news_model中定义add_news方法完成添加操作。
CI框架学习笔记第一天_第13张图片
在控制器中,接收表单提交的数据然后调用model里面的添加方法完成添加操作。
先解决一个问题,在视图中表单的action的值该如何来写。
这里写图片描述
这里涉及到CI的辅助函数,
配置base_url,如下:
CI框架学习笔记第一天_第14张图片
默认情况下,url辅助函数是没有加载的,要使用,则需要加载,可以在配置文件中,配置自动加载,也可以在需要使用的地方手动加载。
自动加载配置:
CI框架学习笔记第一天_第15张图片
url辅助函数中,提供了base_url()和site_url()方法。
其中,base_url的值是在config中配置的base_url的值,如http://localhost/citest/
而site_url的值则是base_url+index_page,如http://localhost/citest/index.php
所以,在视图中要定义控制器的某个动作(url),使用site_url
这里写图片描述
在控制器中定义insert方法完成插入操作
CI框架学习笔记第一天_第16张图片
完成新闻的读取
在news_model中定义一个方法来获取数据
CI框架学习笔记第一天_第17张图片
在news控制器中定义一个方法index,调用模型中的方法获取新闻数据,然后将数据分配到视图。

CI的执行流程

思考题:
1、默认的welcome页面是怎么显示的?
2、 this3使 this->load怎么理解?
CI是一个单入口的框架,所有的请求都需要经过index.php文件。
大致的流程如下:
CI框架学习笔记第一天_第18张图片
分析index.php文件
这里写图片描述
这里写图片描述
这个和我们的文件夹结构名称一一对应,可以更改。如果更改了,只需要将在此处修改一下名称与文件夹名字相同即可。
这里写图片描述
CI框架学习笔记第一天_第19张图片
最后载入codeIgniter.php文件。
这里写图片描述
分析codeIgniter.php
首先载入通用函数库。
这里写图片描述
载入配置文件(常量配置)
这里写图片描述
载入核心类
初始化Benchmark类
这里写图片描述
初始化钩子类
这里写图片描述
初始化配置类
这里写图片描述
初始化字符编码类
这里写图片描述
初始化uri路径类
这里写图片描述
初始化路由类
这里写图片描述
初始化输出类
这里写图片描述
初始化安全类
CI框架学习笔记第一天_第20张图片
初始化输入类
这里写图片描述
初始化语言包类
CI框架学习笔记第一天_第21张图片
载入ci的总控制器
这里写图片描述
通过router对象$RTR的两个方法获取当前的类名和方法名
这里写图片描述
比如,输入的是http://localhost/citest/index/welcome/index,那么上述代码获取的 classwelcome, method就是index,一个是控制器,一个是方法名。如果没有方法名,则默认使用index方法。
这里new了一个对象,叫做CI,这是CI框架中的超级对象。
这里写图片描述
new的时候做了些什么?
分析CI_Controller.php
采用单例模式创建controller对象。
CI框架学习笔记第一天_第22张图片
这里写图片描述
将前面载入的核心类,作为CI对象的属性。
这里写图片描述
然后载入Loader.php类。
这里写图片描述
在控制器中出现的 this this->load其实也是一个对象Loader对象。
超级对象生成后,我们就可以使用超级对象提供的一系列方法完成我们的业务逻辑,如果要完成其他功能,可以载入其他的类文件,辅助函数,这些类文件和辅助函数包括CI已经提供好的,也可以是自己定义的。

你可能感兴趣的:(PHP)