[codeigniter 三]、例子——“Hello World!”

今天我们来学习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的文件,然后输入下列代码:
<?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!”。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值