当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

20.5.3CodeIgniter的Controller(控制器)

9/17/2020 9:26:54 PM 人评论

20.5.3CodeIgniter的Controller(控制器)

20.5.3 CodeIgniter的Controller(控制器)

在CodeIgniter中,一个Controller就是一个类文件,Controller所属的类和普通的PHP类几乎没有区别,唯一的不同是Controller类的命名方式,它所采用的命名方式可以使该类和URI关联起来。例如下面这个URL地址,就说明了这个问题。


www.mysite.com/index.php/news/


当访问到上面这个地址时,CodeIgniter会尝试找一个名叫news.php的控制器(Controller),然后加载它。当一个Controller的名字匹配URI段的第一部分,即news时,它就会被加载。代码20-4演示创建一个简单的Controller类。

代码20-4 使用CodeIgniter的Controller hello.php


01 <?php

02 class Hello extends Controller

03 {

04 function index()//方法index()

05 {

06 echo'Hello World!';

07 }

08 }

09 ?>


把它保存在application/controllers/目录下,以本书为例,通过浏览器访问地址http://localhost/ch20/index.php/hello,可以看到如图20-4所示的执行结果。

图 20-4 Controller的使用

注意 在CodeIgniter中,类名首字母必须大写。

例如下面的代码写法就是不正确的。


<?php

class hello extends Controller

{

//do something

}

?>


【代码解析】代码20-4定义了一个Hello,它继承于Controller类,Controller类是CodeIgniter控制器基类,所有的控制器都将从这个类派生。这个例子中用到的方法名是index()。如果URI的第二部分为空,会默认载入“index”方法,这也就是说,也可以将地址写成http://localhost/ch20/index.php/hello/index来访问hello.php。

由此可知,URI的第二部分决定调用控制器中哪个方法,代码20-5演示了在Hello控制器中加入了其他方法,此时hello.php如下所示。

代码20-5 为Controller添加方法hello.php


01 <?php

02 class Hello extends Controller

03 {

04 function index()//方法index()

05 {

06 echo'Hello World!';

07 }

08

09 function saylucky()//添加方法saylucky()

10 {

11 echo'It\'s time to say"Good Luck"!';

12 }

13 }

14 ?>


【代码解析】第9~13行添加了一个方法saylucky(),此时通过地址http://localhost/ch20/index.php/hello/saylucky访问hello.php,可以看到如图20-5所示的效果。

图 20-5 为Hello控制器添加方法

如果URI超过两个部分,那么超过的部分将被作为参数传递给相关方法。例如地址www.mysite.com/index.php/products/shoes/sandals/123,URI中的sandals和123将被当做参数传递给products类的方法shoes。代码20-6演示了这种用法,仍然以hello.php为例,完整代码如下所示。

代码20-6 向Controller的方法传递参数hello.php


01 <?php

02 class Hello extends Controller

03 {

04 function index()//方法index()

05 {

06 echo'Hello World!';

07 }

08

09 function saylucky()//方法saylucky()

10 {

11 echo'It's time to say"Good Luck"!';

12 }

13

14 function sayhello($name)//添加带参数的方法sayhello()

15 {

16 echo"Hello,$name!";

17 }

18 }

19 ?>


【代码解析】第14~17行创建的sayhello()方法带一个参数,假设为方法sayhello()传递参数“michael”,通过地址http://localhost/ch20/index.php/hello/sayhello/michael访问hello.php,可以看到如图20-6所示的结果。

图 20-6 向方法传递参数

相关教程

共有条评论 网友评论

验证码: 看不清楚?