CI框架学习笔记第一天

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

学习目标

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

CI简单介绍

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

CI快速入门

获取与安装:
在官网下载:http://codeigniter.org.cn/
将下载好的文件解压到工程目录下:
这里写图片描述
直接访问:http://localhost/citest/
这里写图片描述
看到此界面表示安装成功。
定义自己的视图和控制器:
这里写图片描述
其中user_guide文件夹删除.
重点关注application文件夹
这里写图片描述
控制器说白了就是一个类文件,并要继承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’);
这句话的作用是:为了防止跨站攻击,直接通过访问文件路径用的
这里写图片描述
视图文件应该放在view目录下:
这里写图片描述
在控制器中调用视图。
使用$this->load->view(“视图名”);即可。
上面的操作只是简单的将html页面展示出来。而实际上是在控制器中经常获得数据传送到视图当中。使用load->view方法的第二个参数分配数据即可。
这里写图片描述
在视图中进行调用。
这里写图片描述
在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操作数据库
1、数据库相关配置,在config/database.php
这里写图片描述

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

这里写图片描述

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

这里写图片描述
如何使用数据库操作类进行操作呢?
当我们连接了数据库之后,可以使用 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方法完成添加操作。
这里写图片描述
在控制器中,接收表单提交的数据然后调用model里面的添加方法完成添加操作。
先解决一个问题,在视图中表单的action的值该如何来写。
这里写图片描述
这里涉及到CI的辅助函数,
配置base_url,如下:
这里写图片描述
默认情况下,url辅助函数是没有加载的,要使用,则需要加载,可以在配置文件中,配置自动加载,也可以在需要使用的地方手动加载。
自动加载配置:
这里写图片描述
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方法完成插入操作
这里写图片描述
完成新闻的读取
在news_model中定义一个方法来获取数据
这里写图片描述
在news控制器中定义一个方法index,调用模型中的方法获取新闻数据,然后将数据分配到视图。

CI的执行流程

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

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值