CI框架

一.CI介绍

小巧,快速,

天下武功,无坚不破,唯快不破。

Ci还是很受欢迎的。

学习CI还有一个好处,相比其他的一些php框架,更容易掌握。(源码和思想)

二.CI快速入门

1.获取与安装

直接上官网下载http://codeigniter.org.cn/

将下载好的文件解压打网站根目录,

在页面中直接访问,输入如http://localhost/citest

看到此界面,表示安装成功。So easy!

2.定义自己的控制器和视图

在编写代码之前,要明确,我们的代码写在什么地方?

其中user_guide 一般会将其删除

重点来关注application文件夹

1)控制器

控制器说白了就是一个类文件,并且要继承自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表示是控制器中的方法。

(2)视图的定义

视图,说白了就是模板文件,可以是html页面,也可以php文件,使用什么后缀并不重要。ci默认后缀是.php,如果模板是php文件,那么后缀不需要写,如果是其他后缀,必须写上后缀,如.html

视图文件应该放在view文件夹中

3)在控制器中调用视图

使用$this->load->view(视图名)即可 【是.html文件,需要带上后缀】

上面的操作只是简单的将html页面展示出来,而实际上是经常 需要在控制器中获得数据,然后分配到视图当中。使用load->view方法的第二个参数分配数据即可。

然后在视图页面,输出数据。

Ci框架中,模板语法是怎样的?

CI使用的原生的php语法,效率高。

在视图中,直接使用$title输出,而不是$data[‘title’],需要注意,CI它使用了一个extract函数,将数组变量导入到当前的符号表,所以直接使用键名作为变量来访问。

3.必须清楚的几个概念

(1)框架开发和二次开发

打个比方:买房子

买二手房,直接拎包入住。   好比是二次开发,dedecms,phpcms,echsop

买毛坯房,不能住人,自己去买各种装修材料,请人装修,才能入住。好比是框架开发,只提供了基础功能和项目结构。

CI是框架,用于框架开发。

(2)MVC

M:model模型,一般是直接操作数据库的

V:view视图,一般指的是模板文件,比如html页面,用于展示数据的

C:controller,控制器,扮演了交通警察的角色,接收请求,然后调用相应的模型来完成工作,获取数据,最后分配到视图。

CI框架也是一个基于MVC的框架。使用CI框架进行开发的时候,大部分工作就是在MVC这块。

三.MVC完整案例

使用mvc来完成一个新闻的一组操作----增删改查。

1.准备工作

书写一个news控制器,

设计一张表

Ci操作数据库

1) 数据库相关配置,在config/database.php

2) 连接数据库

Ci提供了专门的数据库操作类,只需要加载该类即可。

有两种方式:

手动载入,在需要使用数据库操作类的地方,使用$this->load->database()即可,比如在模型中载入。

自动载入,在config/autoload.php配置文件中,autoload[‘libraries‘] 加入database即可。

3) 操作

定义news模型【在模型中连接数据库,在控制器中加载模型】

Model_name 是模型类的名字。 类名的首字母必须大写,其他字母小写。

文件名应该是模型类名一致。

如何使用数据库操作类进行操作呢?

当我们连接了数据库之后,可以使用 $this->db 来操作数据,最常用的一个方法就是$this-db->query(sql语句)

如果直接使用query,是比较麻烦的。每次还得自己来拼凑sql语句,我们更希望有一个能够完成自动增删改查的这么一个功能,CI中也提供了这么一个类,这个类就是active recored类,也叫AR。最基础的一组操作,如下:

  • $this->db->get();
  • $this->db->insert();
  • $this->db->update();
  • $this->db->delete();

2.完成添加新闻

在news_model中定义add_news方法完成添加操作

在控制器中,接收表单提交的数据,然后调用模型来完成对数据库的操作。

先解决一个问题,就是在视图中,表单的action的值该如何来写?

这就涉及到CI的辅助函数 url 函数,

配置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 方法完成 插入操作

3.完成新闻的读取

在news_model模型中,定义一个方法,获取数据

然后在news控制器中,定义一个方法index,调用模型的中的方法,获取新闻,然后分配到视图

这部分需要自己组合,传键给模板

在视图文件 list.html中,展示新闻列表,使用的是php的原生模板语法

在浏览器中,输入http://localhost/citest/index.php/news/index

结果如下:

时间: 2025-01-01 08:50:23

CI框架的相关文章

CI框架源码阅读笔记3 全局函数Common.php

从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap引导文件都会最先引入全局函数,以便于之后的处理工作). 打开Common.php中,第一行代码就非常诡异: if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 上一篇(CI框架源码阅读笔记2 一切的入口 index

后盾网-CI框架学习笔记

CI框架: 表单验证: 载入验证类 $this->load->library('form_validation'); 设置规则 $this->form_validation->set_rules('name值','规则'); 执行验证 $this->form_validation->run() 表单验证辅助函数: $this->load->helper('form'); 1. set_value('name') //重填数据 2. form_error('n

CI框架3.0版本以后,前后台分离的方法。

笔者认为,CI框架官方其实并没有考虑这个前后台分离的问题,所以没有官方的分离方法.而且,2.0版本的分离,也被官方认为这是一个bug.所以在前后台分离这个问题上,其实并不如thinkphp框架. 在CI框架2.0版本时的,大多数人认为可以这样做,前后台分离是可以直接在controller下,分admin和home目录的. 这是2.0版本时 其实,今天我用的是3.0版本的CI框架.在前后台分离这个问题,我也纠结了比较久.但是为了项目结构目录的清晰,还是要做前后台分离的. 我大概是做了这样一个分离.

CI框架剖析一

CodeIgniter 是一个小巧但功能强大的 PHP 框架,作为一个简单而"优雅"的工具包,它可以为开发者们建立功能完善的 Web 应用程序.本人使用CI框架有一段时间了,现在决定把该框架源码剖析一遍,理解其构架的用意与精妙之处.分析完所有的源码后,我才来总结CI框架的优缺点,以及适用于哪些场景开发. 目前CI最新的版本是 3.1.4, 4.0版本也即将发布.我们先分析3.1.4版本,然后再看看4.0有哪些重大突破. 首先是查看根目录下index.php文件了,主要定义了几个常量:

【ci框架基础】之部署百度编辑器

在ci框架下加载编辑器,现在复习下内容.我的框架文件名称为ci 1.下载百度编辑器ueditor,http://ueditor.baidu.com/ 一般情况下下载ubuilder版即可,并将ueditor复制到ci框架的根目录下. 下载好的编辑器目录为:-ueditor----dialogs     弹出对话框对应的资源和JS文件----lang        编辑器国际化显示的文件----php         涉及到服务器端操作的后台文件----themes      样式图片和样式文件-

ngnix 配置CI框架 与 CI的简单使用

ngnix 支持 CI框架1.修改config.php 参考网址:https://www.chenyudong.com/archives/codeigniter-in-nginx-and-url-rewrite.html 2. ci小样例 http://www.mamicode.com/info-detail-514033.html 控制器的默认配置文件: routes.php, 不修改默认为跳转到welcome控制器 3.修改CI为子目录 https://yq.aliyun.com/artic

CI框架源码分析

这几天,把ci源码又看了一遍,于是有了新的收获.明白了在application目录下core文件夹的作用,就是用来写ci核心文件的扩展的, 而且需要在配置文件中添加类前缀MY_. CI框架整体是但入口文件,入口文件是Index.php在该文件中定义了一些系统变量,比如BASEPATH和 APPPATH等,最后加载ci框架的核心文件CodeIgniter文件,该文件位于system文件夹下的core文件夹下,此文件夹是ci的核心文件,包括了 controller,model,router,conf

CI框架程序--本地调试之后部署新浪SAE

转载之前写的一点点东西,希望可以帮助到一些朋友 前几天给朋友写了个简单的网站, 想想还是部署到服务器上让朋友看一下效果! 用CI框架写的,有个SAE新浪云的账号,可以用!就部署到上面去了!途中遇到了一些问题!一一解决了! 在这里分享一下 供遇到这些问题的朋友们做个参考! 首先遇到的问题就导入SQL数据的时候出错,由于我SAE上之前写过一个程序,导入数据的时候,怎么选都选不到刚创建的MySql上, 貌似是要绑定一下! 我用的mac 火狐浏览器, 好像SAE上的MySQL的phpmyadmin跟这个

CI框架源码阅读笔记5 基准测试 BenchMark.php

上一篇博客(CI框架源码阅读笔记4 引导文件CodeIgniter.php)中,我们已经看到:CI中核心流程的核心功能都是由不同的组件来完成的.这些组件类似于一个一个单独的模块,不同的模块完成不同的功能,各模块之间可以相互调用,共同构成了CI的核心骨架. 从本篇开始,将进一步去分析各组件的实现细节,深入CI核心的黑盒内部(研究之后,其实就应该是白盒了,仅仅对于应用来说,它应该算是黑盒),从而更好的去认识.把握这个框架. 按照惯例,在开始之前,我们贴上CI中不完全的核心组件图: 由于BenchMa

CI框架源码阅读笔记1 - 环境准备、基本术语和框架流程

最开始使用CI框架的时候,就打算写一个CI源码阅读的笔记系列,可惜虎头蛇尾,一直没有行动.最近项目少,总算是有了一些时间去写一些东西.于是准备将之前的一些笔记和经验记录下来,一方面权作备忘,另一方面时刻提醒自己:借鉴和学习才有出路,忘记过去意味着背叛! 基本术语说明 在本文开始之前,有必要对文中反复出现的术语做一个简单的说明,如果你对这一部分已经熟谙,完全可以略过.本文中反复出现和提及的术语包括: 前端控制器(Front Controller): 用于集中控制用户的所有请求的组件,将用户的请求发