主页 > 后端 > codeigniter >
来源:未知 时间:2015-04-22 09:57 作者:xxadmin 阅读:次
[导读] 大家好!上一节,我们共同部署了一个CI网站,做到这一点非常简单,但是,亲们,要知道这才刚刚开始额~~~ 这一节,我们主要来了解CI的文件结构和CI是如何工作的。这一点特别的重要...
大家好!上一节,我们共同部署了一个CI网站,做到这一点非常简单,但是,亲们,要知道这才刚刚开始额~~~
这一节,我们主要来了解CI的文件结构和CI是如何工作的。这一点特别的重要! 【本讲内容】 一、CI的文件结构; 了解CI的文件结构可以帮助我们快速的对CI框架有一个整体的认识,就好像我们去了一个陌生的城市一样,对你来讲周围的一切都是陌生和未知的,要想快速的了解这座城市,你可以买一张这座城市的地图,整体的了解这座城市的方位、结构和风景等等之类的。 二、CI是如何工作的。 我们不光要对CI框架要有一个整体的认识,同时还要清楚CI是如何工作的,这样才能快速的掌握和运用CI,还拿刚才去一个陌生城市来说吧,如果你想很快的适应和融入这座城市,是否我们有必要知道一些关于这座城市的风土人情和文化习俗呢。我想还是很有必要的吧,毕竟我们得入乡随俗呀。 当然,军哥这里只是简单的介绍一下,让大家有一个大概的思维认知。 【具体内容】 1、CI的文件结构。 大家还记得第一讲中的CI目录结构图吗,当时并没怎么详细说明,我们再来看一下。 根据上图我们可以知道,CI主要组成部分为,application(应用文件夹)、system(系统文件夹)和index.php入口文件。 应用文件夹中主要是存放控制器、模型和视图等,系统文件夹中主要是存放组成CI的核心文件的,index.php入口文件是一个单一入口文件,所谓单一文件是指在一个网站(应用程序)中,所有的请求都是指向的这么一个文件,由它负责接收并处理URL中的控制器和方法。换句话说, 它调用一个 '控制器', 然后返回一个'视图'。 具体对单一入口文件的介绍我引用了高洛峰老师在BroPHP中对它的一个解释。如下:
好,接着来具体看application(应用文件夹)、system(系统文件夹)中放了哪些文件以及它们的作用是什么吧。 application : cache 第一次安装时为空,如果你打开缓存设置,这个目录存放缓存数据 config 存放配置文件,包含网站的基本配置信息 controllers 存放你项目的控制器目录 core 该目录可以扩展系统的核心文件 errors 包含出错信息页,你不必修改这个目录 hooks 首次安装时为空,用来存放你创建的钩子。钩子是 用来装载其它文件的控制方法 helpers 辅助函数,你可以对系统的辅助函数进行扩展 language 存放你本国语言的文件目录 libraries 类库,你可以创建自己的类库 logs 如果你设置打开了系统的错误日志,日志文件就默认保存在这个目录 models 存放你项目的模型目录 views 存放视图的模板目录 system : core 存放系统核心文件 database CI框架的数据库类的类库文件 fonts 没有在用户手册中介绍,存放水印图像使用的字体 helpers 辅助函数,你可以对系统的辅助函数进行扩展 language 存放英语的文件目录 libraries 存放一些类库的目录,比如SESSION类、分页类、图像类等 应用文件夹(application)中,最重要的文件夹是config,该文件夹内有两个需要关注的文件:config.php 和 database.php。 ,其次是controllers、models和views文件夹,分别存储你网站中的控制器、模型和视图。 爱问问题的你可能会纳闷CI为什么要这样来设置文件结构,其实啊,为什么要把代码放在这个目录而不是那个目录是没有什么理由好讲,这就是CI里的一种约定。 另外细心的你是不是又发现application和system有些文件夹是相同的呢,如core、helpers、libraries等。其实这也是由CI结构约定的, 当你装载一个辅助函数helper, 或类库文件library, CI会在上述两个目录中查找,比如你要装载一个类叫做无限分类的类Category, CI会先查找application/libraries目录。如果这个目录中不存在,CI会寻找system/libraries目录。这意味着可以通过把同名的文件放入application目录来取代CI核心库的libraies, helpers。但不要轻易尝试这样做,因为这种高度的灵活性需要你拥有足够多的CI使用经验。 2、那CI是如何工作的呢? 上一节我们快速的搭建好了一个CI网站,浏览器成功的显示出一个欢迎界面。我们不禁要问那究竟是如何显示出来的呢?其实根据我们前面对CI的介绍和结构分析之后,我们不难发现这跟CI使用M-V-C模式和单一入口文件有关。 我们来简单分析一下: 例如当我们访问http://localhost/ci_demo/index.php的时候,程序会依靠index.php来做大量的初始化工作,调用大量的基础类库,并根据index.php后面的参数来加载控制器和方法,然后调用模型,加载视图等内容信息。当然在这个例子当中index.php后面你并没有看到任何参数,但这不代表就没有参数存在,因为CI事先已经默认指定好了控制器和方法的参数,这个默认的参数可以自己指定,配置文件存放在application/config/routes中,该配置文件中包含下列设置: $route['default_controller'] = "welcome";$route['404_override'] = '';上述config文件,默认的控制器为welcome,如果没有指定方法,index方法会被默认指定。如果请求的控制器或方法不存在,则程序会转到“404”页面。结果如图所示: 另外需要进一步说明的是上述URL中方法(也称为函数)必须是前面那个控制器中存在的。或则说,你不能够在一个控制器内调用其它控制器内的方法。 我们来总结一下CI处理URL的具体细节(部分摘自CI中国论坛): 假如URL网址为:http://yoursite/index.php/control/func/param1/param2/...
所以上面网址可以理解为:http://localhost/index.php/控制器名/方法名/方法的参数1/方法的参数2/... 总结:军哥对具体CI是如何工作的讲解的还是比较浅显和笼统的,主要目的还是先快速的带大家建立起一个对CI的初步认识,更多的后面会逐渐来深入。 好,这讲就到这吧,下一讲我们来学习如何具体来写一个控制器、方法和视图,然后我们自己写一个大家都懂的例子——“Hello World!”, |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com