大家好,欢迎和我一起共同学习和研究CI框架,本教程为《军哥谈CI框架》系列教程的CI入门教程,在开始本教程之前呢,军哥需要说明一下的是虽然本教程为学习CI的一个入门教程,但是也需要你有系统的学习过HTML、CSS和PHP,当然还要有MySQL等数据库的基础,另外最好是有面向对象的基础,毕竟CI是用了面向对象的开发结构和MVC的模式。所以,军哥奉劝那些一点HTML和PHP基础都没有的兄弟就别在这浪费你的时间了,还是先脚踏实地的打好基础再说吧。
好,我们开始今天第一讲,关于codeigniter的介绍和安装配置的学习。
【本讲内容】
一、codeigniter(以下简称CI)的介绍;
我们一起来了解一下CI是什么?CI能够为我们做什么?以及CI的不足在哪里?
二、codeigniter的安装配置。
我们学习一个技术不是仅仅只是想知道它是什么和能为我们做什么,最重要的是我们要掌握和使用它。其实CI的安装和使用是非常简单的,过一会你们就可以感觉的到~~
【具体内容】
一、CI的介绍。
1、CI是什么?
军哥喜欢用这样一句话来介绍CI是什么,CI是一个免费、轻量级但功能强大且易扩展的PHP框架,使用面向对象的开发结构和MVC模式,提供了一套丰富的类库来满足通常的任务需求。总之,CI简单易学,高效实用!
那怎么样来解读这句话呢?我们接着看:
(1)、CI是一个PHP框架;
大家都知道PHP框架有很多,CI只是其中之一,框架是为了重用发明的。同样,CI的目标是实现让你比从零开始编写代码更快速地开发项目。CI可以将需要完成的任务代码量最小化,这样你就可以把更多的精力放到项目的开发上了。
(2)、CI是免费的;
CI是经过开源许可授权的,只要你愿意就可以使用它。
(3)、CI是轻量级的;
CI的核心系统只需要一些非常小的库,这与那些需要更多资源的框架完全相反。额外的库文件只在请求的时候加载,依需求而定,所以核心系统是非常快而且轻的。
(4)、CI使用M-V-C模式;
CI使用了模型(Model)- 视图(View)-
控制器(Controllers)的方法,这样可以更好地使表现层和逻辑层分离。
(5)、CI功能强大;
CI拥有众多的类库,可以方便并快速的完成开发任务,包括:读取数据库、数据的缓存、发送电子邮件、保存session、文件的上传、图像的操作、数据的确认等。
(6)、CI是易扩展的;
CI可以非常简单的通过自定义类库、辅助函数来进行扩展,或者也可以通过扩展类、系统钩子来实现。
(7)、CI不需要模版引擎;
虽然CI自带了一个可选的模板解析器程序,但不要求你必须使用模板。模板引擎完全与本地化PHP代码的性能需求不符,使用模板引擎我们要学习其语法,这最低限度只比学PHP基础要容易一点点。
(8)、CI已彻底文档化;
程序员都喜欢写代码讨厌写文档。当然我们也一样,但是既然文档和代码本身一样重要,我们就要完成它了。况且我们代码资源极其干净而且方便注释。
(9)、CI拥有一个友好的用户社区。
2、CI能够为我们做什么?
如果你已经是一位PHPer, 开发过PHP应用, CI将会帮助你做得更好, 更容易达成目标。
CI会减少你的代码数量。它会使你的网站结构更紧凑,代码更强健,
如果不是很好地研究CI的源代码的话,你可能还无法察觉到它的强健。
对大多数兄弟来讲,你可能已经花了不少时间,
系统地学习了PHP、HTML和CSS,当然还有MySQL什么的。不过如果使用CI,你只需要一些基本的LAMP(WAMP)知识,
你没有必要先成为一个专家才能使用CI。
你完全可以先借助于CI或别的什么框架,成为一个有生产力的PHP程序员,拿着高薪然后优雅地进一步学习PHP的中高级知识,直至成为一位真正的PHP骨灰级人物。
(1)、节约时间;
节约的时间包括两个方面,一方面呢,由于CI入门相当简单,所以学习周期短,见效快!另一方面,其实通过刚才对CI的介绍,我们很清楚CI能够为我们节约很多的开发时间。
(2)、轻松编程、享受编程乐趣,而不是一个干苦活的体力工;
CI能够让你更好的享受编程的乐趣,因为它减少了你的编码重复的工作,而且它也建立一个合理的系统结构,让你很轻松也很方便的管理更为复杂的程序。
(3)、减少代码量;
举三个例子你就知道了。
示例一:想象一下你正在写MySQL查询,可能的代码如下,
- $link = mysql_connect(""主机名,"用户名","密码");
- mysql_select_db("数据库名", $link);
- $result = mysql_query("SELECT * FROM 表名", $link);
- while ($row = mysql_fetch_assoc($result)) {
- foreach ($row as $v) {
- echo $v['name'];
- }
- }
那我们看看CI如何来处理这个问题:
- $this->load->database('数据库名');
- $query = $this->db->get('表名');
- foreach ($query->result() as $row) {
- echo $row->name;
- }
示例二:例如军哥在写phper小站的菜单页时,上面有许多的超链接需要重定向到网站的其他页,我们可以用传统的HTML格式编写(当然这里只是举例,实际会有些不同),
而我们CI给你一个函数,可以这样写,
- echo anchor("jayjun/doc/start/2","PHP入门");
- echo anchor("jayjun/doc/oop/3","面向对象");
- echo anchor("jayjun/doc/design/4","设计模式");
- ……
当你的网站现在需要由开发环境部署到服务器上,这时就需要你改变这个链接了,如果是传统的方式你只能手动的一个个去修改,而我们CI中的anchor函数会自动从config文件中提取相关URL,CI推荐你把你的URL放入一个config文件存储。因此,
当你修改一个URL时,你只需要修改config文件中的的对应链接,就一次那么简单。
示例三:想象你正在写一个性别的下拉输入框,下拉框中有三个选项,如下,
然而CI是把相关内容放入一个数组中,然后用自带的表单辅助函数来帮你做到,
- $sexarray = array('1' => '男','2' => '女','3' => '未知');
- $str= form_dropdown('sex', $sexarray, '3');
以上只是减少代码量的几个简单示例,还有许多地方CI都可以做到这一点,具体请大家今后慢慢领略和体会吧~~
(4)、使你的网站更安全、更强健;
(5)、帮助你提高对面向对象思想的理解。
军哥一贯主张面向对象的学习分两步走:第一步是掌握其基本语法,要求熟练;第二步是理解其思想。我们知道第一步简单,反复练习即可做到,然而第二步对面向对象思想的理解可不是简单的反复练习就能做到的,这需要你有深入的理解和经验的积累才行。那怎么样才可以做到呢,其实啊通过对CI源码的研读以及分析会加深你对面向对象思想的理解,军哥就是这样做的,不妨你也试试~~。
3、CI的不足?
是的,它是不完美的!就像我们人一样,没有完美的个人。
二、CI的安装配置。
1、准备工作;
(1)、服务器的要求;
PHP 版本 5.1.6 或更新的版本。
(2)、称心的PHP编辑器。
PHP的编辑器有很多,没有一定要用哪一款编辑器这一说,用的习惯和熟练的就是最称心的。军哥用的是VIM编辑器。
2、下载CI;
建立好开发环境后,到CI网站http://www.codeigniter.com/下载最新版的CI框架,2.1.3是最新版。
下载后的CI目录结构如下:
具体分析我们下一节再讲。
3、一分钟:建立一个CI网站。
(1)、在根目录建一个文件夹,将解压的CI文件拷贝至该文件夹下;
例如军哥在根目录下贱了一个ci_demo的文件夹,然后将解压后的文件拷贝至ci_demo中。
(2)、配置文件;
找到ci_demo/application/config/config.php文件,将第17行设置为$config['base_url']=
'http://localhost/ci_demo';然后保存即可。
(3)、浏览器访问。
浏览器中输入http://localhost/ci_demo/index.php即可访问到CI网站,页面显示为CI的欢迎界面,你看是不是一分钟就搞定了呢。