[codeigniter 三]、例子——“Hello World!”
2015-07-16 23:40
267 查看
今天我们来学习CI框架中的控制器、方法和视图,然后我们一起完成一个大家都懂的例子——“Hello
World!”。
1、控制器、方法。
(1)、什么是控制器呢?
我们都知道,控制器指的是模型(model)-视图(view)-控制器(controller),即M-V-C模式中的C层,主要负责接受用户的输入并调用模型和视图去完成用户的需求,本身不输出任何东西和做任何处理的。其实讲白一点,控制器就是一个类文件,不过这时其文件命名跟你的URL关联在一起了。这一点应该很好理解的,只要你还记得上一讲中我们对CI如何处理URL进行的一个分析。
假设有这样一个URL:
http://IP:PORT/ci_demo/index.php/Welcome/
在上面的例子中,CodeIgniter 将尝试寻找并装载一个名为 Welcome.php的控制器。
(2)、创建一个简单的控制器、方法。
在application/controllers/ 目录下新建一个名为Welcome.php的文件,然后输入下列代码:
接着我们在控制器中写一个方法,就命名为index()吧。如下:
现在使用浏览器输入http://IP:PORT/ci_demo/index.php/Welcome/index,如果你做的没错,你应该看到页面输出This
is a test!。
以上我们需要注意以下几点:
1)、类名必须以大写字母开头。以下才是有效的:
2)、确保你的控制器扩展自父控制器类(名为CI_Controller),以便它能够继承其所有的方法。
3)、URL会在控制器中默认载入index()方法。
上例中,正好有index()方法,我们在浏览器输入http://IP:PORT/ci_demo/index.php/Welcome也是可以访问到。
4)、保留字。
为了便于编程,CodeIgniter使用了一系列的函数和名称来完成操作。所以,有些名称不能被程序员使用。下面是不能被程序员使用的保留字列表。
因为你的控制器类将继承主程序控制器,所以你的函数命名一定不能和主程序控制器类中的函数名相同,否则你的局部函数将会覆盖他们。下面列出了已经保留的名称,请不要将你的控制器命名为这些:
当然还有一些常量和变量也是不能重名的,想了解更多的话,你可以查一下官网上关于保留字的介绍。
刚才我们介绍了M-V-C中的控制器C层,接下来介绍视图(views)V层。
2、视图。
在M-V-C模式中,视图是是用户看到并与之交互的界面。讲通俗一点,一个视图就是一个网页,或者是网页的部分,如头部,底部,侧边栏等等。
(1)、首先创建视图。
在application/views/ 目录新建一个名为hello.php文件。代码如下:
(2)、接着载入视图。
由于我们写的控制器继承了父控制器,所以我们可以在方法中调用下面的函数来装载一个视图。
$this->load->view("需要载入的视图文件名称");
此时注意一下的是如果你的视图文件扩展名是.php的,那加载视图的文件中不用专门写上扩展名。除非你用的是其它扩展名(如.html、.tpl等)。
例如,刚才我们写的hello.php文件,可以这样来加载:
$this->load->view("hello");
(3)、给视图添加动态数据。
这里讲的动态数据可以是变量、数组、多维数组或对象。好了,让我们一起在控制器中试试:
现在打开你刚创建的hello.php,将其中的文本换成在控制器中写好的动态数据。如下所示:
上张截图看下效果:
3、完成“Hello World!”。
World!”。
1、控制器、方法。
(1)、什么是控制器呢?
我们都知道,控制器指的是模型(model)-视图(view)-控制器(controller),即M-V-C模式中的C层,主要负责接受用户的输入并调用模型和视图去完成用户的需求,本身不输出任何东西和做任何处理的。其实讲白一点,控制器就是一个类文件,不过这时其文件命名跟你的URL关联在一起了。这一点应该很好理解的,只要你还记得上一讲中我们对CI如何处理URL进行的一个分析。
假设有这样一个URL:
http://IP:PORT/ci_demo/index.php/Welcome/
在上面的例子中,CodeIgniter 将尝试寻找并装载一个名为 Welcome.php的控制器。
(2)、创建一个简单的控制器、方法。
在application/controllers/ 目录下新建一个名为Welcome.php的文件,然后输入下列代码:
<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); class Welcome extends CI_Controller { function __construct() { parent::__construct(); } } ?>
接着我们在控制器中写一个方法,就命名为index()吧。如下:
<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); class Welcome extends CI_Controller { function __construct() { parent::__construct(); } public function index() { echo "This is a test!"; } } ?>
现在使用浏览器输入http://IP:PORT/ci_demo/index.php/Welcome/index,如果你做的没错,你应该看到页面输出This
is a test!。
以上我们需要注意以下几点:
1)、类名必须以大写字母开头。以下才是有效的:
class Welcome extends CI_Controller { } ?>
2)、确保你的控制器扩展自父控制器类(名为CI_Controller),以便它能够继承其所有的方法。
3)、URL会在控制器中默认载入index()方法。
上例中,正好有index()方法,我们在浏览器输入http://IP:PORT/ci_demo/index.php/Welcome也是可以访问到。
4)、保留字。
为了便于编程,CodeIgniter使用了一系列的函数和名称来完成操作。所以,有些名称不能被程序员使用。下面是不能被程序员使用的保留字列表。
因为你的控制器类将继承主程序控制器,所以你的函数命名一定不能和主程序控制器类中的函数名相同,否则你的局部函数将会覆盖他们。下面列出了已经保留的名称,请不要将你的控制器命名为这些:
Controller CI_Base _ci_initialize Default index另外,也请不要将你的方法命名为这些:
is_really_writable() load_class() get_config() config_item() show_error() show_404() log_message() _exception_handler() get_instance()
当然还有一些常量和变量也是不能重名的,想了解更多的话,你可以查一下官网上关于保留字的介绍。
刚才我们介绍了M-V-C中的控制器C层,接下来介绍视图(views)V层。
2、视图。
在M-V-C模式中,视图是是用户看到并与之交互的界面。讲通俗一点,一个视图就是一个网页,或者是网页的部分,如头部,底部,侧边栏等等。
(1)、首先创建视图。
在application/views/ 目录新建一个名为hello.php文件。代码如下:
<html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>创建一个简单的视图</title> </head> <body> <h1>大家好,我是Sulley007!</h1> <p>考大家一个问题:我的QQ是什么?</p> <p>答案:xxxxxx ^_^</p> </body>
(2)、接着载入视图。
由于我们写的控制器继承了父控制器,所以我们可以在方法中调用下面的函数来装载一个视图。
$this->load->view("需要载入的视图文件名称");
此时注意一下的是如果你的视图文件扩展名是.php的,那加载视图的文件中不用专门写上扩展名。除非你用的是其它扩展名(如.html、.tpl等)。
例如,刚才我们写的hello.php文件,可以这样来加载:
$this->load->view("hello");
(3)、给视图添加动态数据。
这里讲的动态数据可以是变量、数组、多维数组或对象。好了,让我们一起在控制器中试试:
<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); class Welcome extends CI_Controller { function __construct() { parent::__construct(); } public function index() { //这里是使用变量的示例 $data['title'] = "创建一个简单的视图"; //这里是使用数组的示例 $data['content'] = array( "name" => "Sulley007", "question" => "我的QQ是多少?", "answer" => "xxxxxx ^_^", ); //这里是使用对象的示例,这时类变量会转变为数组元素,由于下面的类是随便写的一个类,这里只是展示一下,为了避免报错,就给注释了 //$data['other_content'] = new SomeClass(); $this->load->view('hello', $data); } } ?>
现在打开你刚创建的hello.php,将其中的文本换成在控制器中写好的动态数据。如下所示:
<html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title><?php echo $title; ?></title> </head> <body> <h1>大家好,我是<?php echo $content['name']; ?>!</h1> <p>考大家一个问题:<?php echo $content['question'] ?></p> <p>答案:<?php echo $content['answer'] ?></p> </body> </html>
上张截图看下效果:
3、完成“Hello World!”。
相关文章推荐
- 基于cocos2dx的飞机大战学习[四]-添加英雄子弹
- 【Android4高级编程笔记】深入探讨Android Activity
- dup和dup2函数
- Leetcode: Power of Two
- Java中如何编解码
- UAC
- openSession()与getCurrentSession()区别
- Unique Binary Search Trees
- 040.Two Array 二维数组
- C语言 数组和字符串篇
- 纪念开通博客的第一天
- UML学习-----类图
- 集成支付宝接口 swift
- Not found org.springframework.http.converter.json.MappingJacksonHttpMessageConverter
- android--系统体系结构
- 038.Global Array 全局数组
- 039.Local Array 局部数组
- 在Window环境下,使用CodeBlocks+GNUStep 配置Objective-C开发环境
- WordPress 在线参考文档
- 037.Goto 代替 Continue 结束本次循环