CodeIgniter框架入门教程——第一课 Hello World!
本文转载自:http://www.softeng.cn/?p=45
今天开始,我将在这里连载由我自己编写的《CodeIgniter框架入门教程》,首先,这篇教程的读着应该是有PHP基础的编程人员,如果你是PHP初学者,建议你先学习基础的PHP技术(包括:变量、选择、判断、循环、数组、面向对象、数据库操作等)以及基础的Web技术术语(包括:URL、页面、表单、交互等),之后再来学习本套教程。
下面我先来介绍一下CodeIgniter框架。CodeIgniter是一个小巧但功能强大的 PHP 框架,作为一个简单而“优雅”的工具包,它可以为 PHP 程序员建立功能完善的 Web 应用程序。如果你是一个使用共享主机,并且为客户所要求的期限而烦恼的开发人员,如果你已经厌倦了那些傻大笨粗的框架那么 CodeIgniter 就是你所需要的。CodeIgniter 是一个基于MVC框架的PHP开源轻量级框架,适合快速开发,相对与Zend Freamwork,其更容易学习和应用,而且CodeIgniter 入门简单,配置方便,适合有PHP基础,但初学MVC模式的编程人员,因为该框架较为简单,所以其帮助文档即可做为初学教程,现将代码及API文档发布如下。
CodeIgniter框架源代码下载地址:
http://pan.baidu.com/s/1hqqnaCW
CodeIgniter框架API手册下载地址:
http://pan.baidu.com/s/1eQvGKyI
接下来给大家介绍一下MVC框架是什么。MVC框架全名Model(模式)—View(视图)—Controller(控制器),用一种业务逻辑和数据显示分离的方法组织代码,使用MVC框架编写的源代码,方便维护、条理清晰,能够使程序员快速的定位到所有修改的代码位置,同时,因为业务逻辑和数据显示的分离,有效的提高了前后台开发人员的配合程度和开发速度。 现在来看看MVC各自的具体作用。Model(模型)是应用程序中用于处理应用程序数据逻辑的部分,通常模型对象负责在数据库中存取数据;View(视图)是应用程序中处理数据显示的部分也就是用户能够看到的界面,通常视图是依据模型数据创建的;Controller(控制器)是应用程序中处理用户交互的部分,通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据,最后,将模型返回的数据发送给视图,显示在界面上。
MVC框架是怎样工作的呢?这其实是一个很重要的问题,对于标准的MVC框架来说,Controller层往往是程序的入口(网页的地址就是Controller层的地址),然后由Controller层加载View层进行显示(显示在浏览器上的页面其实并不是你输入的地址),在View层用户通过表单实现交互,表单将数据传回Controller层,由Controller层调用Model层进行数据处理、存储、读取等操作,然后Model层将处理结果返回给Controller层,Controller层再次加载View层显示处理的结果,这样就完成了一次完整的、标准的MVC框架下的用户交互动作,在我描述的这个交互过程中,请大家注意两个关键的词语:加载和调用,现在可能还不理解,在接下来的学习中,你将逐步体会到这两个词的区别和关系。为了更加直观的表示,我将整个交互过程用一幅流程图表示,如下所示:
必要的预备知识就是如此了,接下来,就进入正式的代码书写环节。下面,用CodeIgniter框架书写第一个程序——Hello World!
首先,从上面的源代码下载地址上下载CodeIgniter的源代码(本人用的是2.1.0版本),将下载到的压缩包解压,解压之后得到CodeIgniter_2.1.0文件夹,将这个文件夹放到你的web根目录下(本人用的是xampp集成开发环境,所以根目录为xampp/htdocs目录),然后修改文件夹的名字为CI_01(此处不修改也可,这里只是为了方便访问),然后在你的浏览器上输入http://localhost/CI_01/,如果能看到以下界面的话,代表你已经部署好了CodeIgniter框架。
接下来,来看看CodeIgniter框架的根目录结构。
我们的代码编写工作,主要在application目录下完成,现在看看这个目录下有什么吧。
大家可以清楚的看到,在application目录下,有着清晰的MVC结构,同时还有许多其他文件夹,在接下来的学习中,我们将逐步接触到这些文件夹。
现在,使用你的编辑工具加载整个工程(CI_01目录),我使用的是Aptana Studio 3这款软件书写PHP代码。打开controllers目录下的(以后如无特殊说明,都是以application做为目录起点)welcome.php文件,在index方法中将
$this->load->view('welcome_message');
删除,写上
echo "Hello World!";
保存一下,现在再来看看http://localhost/CI_01/页面的内容呢?如果是下面这样,恭喜你,你的第一个CodeIgniter页面已经成功了。
总结:这一课我们了解了CodeIgniter框架的基本信息,目录结构,通过修改CodeIgniter的默认控制器,书写了第一个Hello World!程序,下一课,我们将学习,如何使用CodeIgniter框架的视图和模型。
第一课源代码下载地址:
CodeIgniter框架入门教程——第一课 Hello World!的更多相关文章
- CI(CodeIgniter)框架入门教程——第二课 初始MVC
本文转载自:http://www.softeng.cn/?p=53 今天的主要内容是,使用CodeIgniter框架完整的MVC内容来做一个简单的计算器,通过这个计算器,让大家能够体会到我在第一节课中 ...
- CodeIgniter框架入门教程——第三课 URL及ajax
本文转载自:http://www.softeng.cn/?p=74 这节课讲一下CI框架的路由规则,以及如何在CI框架下实现ajax功能. 首先,先介绍CI框架的路由规则,因为CI框架是在PHP的基础 ...
- 160921、React入门教程第一课--从零开始构建项目
工欲善其事必先利其器,现在的node环境下,有太多好用的工具能够帮助我们更好的开发和维护管理项目. 我本人不建议什么功能都自己写,我比较喜欢代码复用.只要能找到npm包来实现的功能,坚决不自己敲代码. ...
- Elasticsearch7.X 入门学习第一课笔记----基本概念
原文:Elasticsearch7.X 入门学习第一课笔记----基本概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https: ...
- 《进击吧!Blazor!》系列入门教程 第一章 8.部署
<进击吧!Blazor!>是本人与张善友老师合作的Blazor零基础入门教程视频,此教程能让一个从未接触过Blazor的程序员掌握开发Blazor应用的能力. 视频地址:https://s ...
- Java - Struts框架教程 Hibernate框架教程 Spring框架入门教程(新版) sping mvc spring boot spring cloud Mybatis
https://www.zhihu.com/question/21142149 http://how2j.cn/k/hibernate/hibernate-tutorial/31.html?tid=6 ...
- Go-Micro框架入门教程(一)---框架结构
Go语言微服务系列文章,使用golang实现微服务,这里选用的是go-micro框架,本文主要是对该框架的一个架构简单介绍. 1. 概述 go-micro是go语言下的一个很好的微服务框架. 1.服务 ...
- Newbe.Claptrap 框架入门,第一步 —— 开发环境准备
Newbe.Claptrap 框架依托于一些关键性的基础组件和一些可选的辅助组件.本篇我们来介绍一下如何准备一个开发环境. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如 ...
- NeHe OpenGL教程 第一课:OpenGL窗口
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
随机推荐
- 详细的图文教程来实现 eclipse环境下如何配置tomcat,并且把项目部署到Tomcat服务器上
很多初学,尤其自学JavaWeb的朋友首次在eclipse下配置tomcat时,总会有种难下手的感觉,在此,通过图文解说的方法,最直观的向大家演示一遍该配置过程. 第一部分:eclipse环境下如何配 ...
- pageX和pageY
pageX() 属性是鼠标指针的位置,相对于文档的左边缘. pageY() 属性是鼠标指针的位置,相对于文档的上边缘. 例1 $(document).mousemove(function(e){ $( ...
- MAC、IDFA、IMEI正则表达式
一.安卓: MAC:接入网络的设备的序号,唯一值.用 16 进制数表示,由 0-9,A-F 组成,如:44:2A:60:71:CC:82 Uuid 正则表达式: ^([0-9a-fA-F]{2})(( ...
- Flume practices and sqoop hive 2 oracle
#receive the file flume-ng agent --conf conf --conf-file conf1.conf --name a1 flume-ng agent --conf ...
- Helloworld -SilverN
/*Hello World*/ #include<iostream> #include<cstdio> #include<cstring> using namesp ...
- 【读书笔记《Android游戏编程之从零开始》】12.游戏开发基础(Canvas 画布)
1.Canvas 画布 画布类 Canvas 封装了图形和图片绘制等内容,此类常用的函数说明如下: drawColor(int color) 作用:绘制颜色覆盖画布,常用于刷屏 参数:颜色值,也可用十 ...
- 分享用于学习C++图像处理的代码示例
为了便于学习图像处理并研究图像算法, 俺写了一个适合初学者学习的小小框架. 麻雀虽小五脏俱全. 采用的加解码库:stb_image 官方:http://nothings.org/ stb_image. ...
- hdu-5834 Magic boy Bi Luo with his excited tree(树形dp)
题目链接: Magic boy Bi Luo with his excited tree Time Limit: 8000/4000 MS (Java/Others) Memory Limit: ...
- python中range函数和xrange函数有什么异同?
http://ciniao.me/article.php?id=17 简单来说,range生成的是一个列表,而xrange生成的是一个生成器,而生成器在数组很大的时候能够比range更节省空间
- Android代码优化----Application节点的模板写法及UI工具类
一. MyApplication类的编写: 新建一个类MyApplication,继承自Application.代码如下: MyApplication.java: package com.smyhva ...