【PHP】CI框架学习:CodeIgniter框架的MVC流程以及Controller介绍

简单介绍CI中的MVC模式

M = models ,V = views , C = controllers 。CI是基于MVC模式构建的,现在就让我们快速的看一看CI的MVC流程实现。

首先来介绍一下CI的运行过程。
所有的请求都发到index.php这个入口文件中,然后根据URL的组成index可以判断是在请求哪个控制器的哪个方法, 然后就将这个请求发送到对应的controller的function中去执行请求;到了C这边,根据请求去调取model,获取相应数据,然后通过view展现出最后的结果。我自己画了个图:

虽然不好看但就差不多咯。

URL的组成是分段的,类似 yoursite/index.php/controller/function/param 这样的,前面的yoursite/index.php是不需要我们管的,后面的第一段是控制器,第二段是方法,以后的段都是要传递的参数,有几个就写几个,没有的话就只需要有2段。在CI中URL的段是很重要的知识点,所有的请求都是基于段的,获取当前URL某一段的方法是

<h2>$this->uri->segment(<var>n</var>)</h2>

参数n就是你想要获取的段数,比如你的URL类似localhost/index.php/product/showinfo/1 的时候,当调用上面的函数是,n=1你会获得product,n=3你会获得1。

Controller 这边,定义一个controller首先要继承CI_Controller ,在文件命名的时候要小写,但是雷明首字母要大写,多个单词用下划线分隔,不要用驼峰法命名。继承CI_Controller 以后,先调用其构造函数


function __construct()
 {
 parent::__construct();
 }

然后就可以定义自己的方法了。整个的代码类似下面的样子:


<?php
 class Student  extends CI_Controller {

function __construct()
 {
 parent::__construct();
 }

function show_info()
 {
 echo '我是一个大学生';
 }

function get_name($id)
 {
 echo $id;
 echo '我是name是刘凯宁';
 }
 }
 ?>

我们定义了一个controller,调用了构造函数,然后加了两个方法,一个带参数一个不带参数。当我们请求 wiesite/index.php/student/show_info这样的URL时候,就会转到student这个控制器的show_info这个方法中去做相应处理,而请求website/index.php/student/get_name/4这样的URL时,就会转到student的get_name方法中,并且带了一个参数4过来。这就是控制器的介绍了:通过请求URL然后转到不同的控制器的不同方法中做相应的处理。

刘凯宁@C2P
20140911

Share

【PHP】CI框架学习:CodeIgniter框架概述及其目录结构组成

让我们开始CI之旅吧!、

CodeIgniter ,一个简单的、优雅的、高效的基于MVC的PHP开发框架。上手简单,语法简单,然后手册详细,社区活跃,于是一大批PHPer的使用的第一个MVC框架就是CI了。很多人说,CI最大的优势是简单,最大的劣势是过于简单。我并没有使用CI很久,这个系列的博客会从最基础的讲起。边学边记录,这就是我最原始的学习步骤,木有办法哇!~开始咯

首先介绍一下官网:CodeIgniter中国http://codeigniter.org.cn/ 这个是CI中国官网,提供最新的CI代码下载、手册下载、视频教程、案例代码以及开发者社区入口,是学习CI框架最权威的网站(至少现在来看是的)CI宣扬简单,于是2分钟搭建一个网站是可能的,并且是绝对能够接受的。

我假定你已经下载好了CI的代码,那么让我们来分析一下CI的目录结构,看下图:

上面这个是CI最外层的目录结构,可以看到有3个文件夹,application是我们做开发时候最需要的目录,system是CI本身的代码,一般不需要改动,user_guide 是自带的用户手册,对初学者来说是最好的学习手册,而在部署代码时候这个文件夹是不必要的。当然会有CI的中文手册,但是看英文的不是显得高大上咩。然后那个,index.php是整个程序的入口。是的,CI和很多很多优秀的框架都是采用了单一入口的处理,通过index可以拦截所有的请求,然后根据URL判断是哪一个控制器的哪一个方法。优秀是一种共同性咯。

下面让我们来看看application文件夹的结构

主要有config、controllers、models、views 等等文件夹组成,最重要的就是这里提到的4个:一个是配置,另外的是MVC三层。后期主要就是往这几个文件夹写我们的逻辑了,后期会详细介绍。

现在来看看system文件夹。

system里面的文件用户一般是不需要动的,这里是CI本身的代码。以后升级的时候,只需要将system的文件夹替换成最新的版本就实现了CI的升级,不用去改动一行代码就可以使用到最新的CI框架。当然我们可以增加一些代码,比如controller啊什么的,但是一般最好不用动。

下面是user_guide文件夹

这是CI的文档,点击index.html就会看到很详细的文档。作为初学者这个文档的价值很大的。

OK,CI的文档目录就介绍到这里,下一篇博客正式用CI做开发!

刘凯宁@C2P
20140909

Share

【非技术】中秋节

又是一个不回家的中秋节!

似乎就印象中就没有在家里度过中秋节。这么些年都在外面上学,中秋没有放假,就算是放假也不会回家,于是就没有办法。

对中秋节无感了。或者说,对别的节日都是没有感觉的,除了春节以外——因为似乎只有春节我在家里……吃粽子,吃月饼,吃元宵,吃吃吃。记得那时候上高中中秋节放假还有烟花能看,而长沙这个神奇的地方每一个周六都有烟花看,于是又无感了。原本还有很多很多祝福短信,现在都换成了QQ和微信,或者如我,发个说说,或者给每一个群发一个中秋节快乐。有意义么?我想是有的吧。毕竟是中秋佳节。

但还是要吃好吃的哇!于是就和室友去吃火锅了。自助火锅,人均50大洋,还不错。应该算是吃回来本了吧哈哈哈,最后的冰淇淋吃的好爽哇!最后都好撑啊啊啊啊啊!体重现在是140+,这学期要不要减肥呢……

美玲从北京带回来的月饼看起来不错哦!

新的学期,大三了。9号开学。

大三你好。

刘凯宁

Share

【非技术】多做事儿少扯谈

觉得自己废话变得越来越多了。

其实我不是很会说话的人。究竟是从什么时候变得能够在很多而你面前大声说话同时又能说的那么有feel的呢?不知道,总之是做的事情少了,说的废话多了。

谈TM思想,谈TM人生,都扯淡的。作为一个大学生就应该整天上课写作业打游戏谈恋爱,闲的蛋疼就知道乱搞,搞了这么两年了,搞出来了啥东西?大学四年,已经过去了整整一大半,除了在不恰当的时候说了很多不恰当的话,还留下了什么?没有吧。

没有人能真正的理解你自己。也不需要。凭啥就一定要听你扯那么多的废话呢?我的时间不宝贵么?多做事儿少扯淡,好好做一枚程序员就可以了,创什么业。呵呵。

想做一个什么东西,就去做,没有人的话就自己做,学了技术就OK ,干嘛要讲给你听?你给别人说自己的所谓的想法的时候,有多少人能够真正理解你想表达的事情?就TM想挣钱,就TM想着投资,就一个网站,想做就做,不想做就别做,说那么多废话给谁听。

大学生创业本来就是一件扯淡的事情。好好做一件东西,对自己好,对别人好,有人能喜欢就OK ,干嘛非要搞所谓的运营,宣传,拉投资。你TM先把东西做出来可以不?说太多太杂,自己不想做就不要做OK。理念都很多,做的时候会遇到很多很多的问题,于是就不敢前行,畏畏缩缩。没有上线的,上线失败的,还没有写一行代码的,谈这些有什么意义?

一根筋怎么了,结果就那么重要?

不谈理想,不谈现实,想聊天的话, 我东西做出来再说。

多做事儿少扯淡。

刘凯宁

Share