ThinkPHP 模块与操作



模块与操作是 ThinkPHP 中的核心部分,所有的核心逻辑都在这里实现!

ThinkPHP 模块

进入 Myapp\\Lib\\Action 目录,里面有个 IndexAction.class.php 文件。该文件为刚才我们运行入口文件 index.php 时系统自动生成的。打开该文件,其内容大致如下(方法内具体代码省略):

<?php
// 本类由系统自动生成,仅供测试用途
class IndexAction extends Action{
    public function index(){
        具体代码略……
    }
}
?>

该文件已经演示了一个基于 ThinkPHP 的实际应用。

ThinkPHP 控制器

像上面这个 IndexAction.class.php 这样的特殊文件,称为控制器。该类文件通常位于 LibAction 下面,命名方式必须以“模块名+Action.class.php”样式来命名,如 IndexAction.class.php ,详细可参考《ThinkPHP 命名规范》一节。

ThinkPHP 模块

一个控制器对应一个模块。如 IndexAction.class.php 就对应 Index 模块,相应的类名为 IndexAction ,如上面的例子:

class IndexAction extends Action

ThinkPHP 操作

一个模块(类)里有多个方法,称之为“操作”。如上面例子的 index 方法:

public function index()

我们更改上面的 IndexAction.class.php 为:

<?php
class IndexAction extends Action{
    public function index(){
        header("Content-Type:text/html; charset=utf-8");
        echo "第一个例子测试!";
    }
}
?>

再次访问网站首页(入口文件):

http://localhost/index.php

浏览器显示内容为在 index 操作中输出的:

第一个例子测试!

而不是原来的默认欢迎界面。

增加操作

要增加一个操作,只需在模块里增加一个定义为 public 方法即可。在 IndexAction.class.php 里面新增加一个 test 操作:

public function test(){
    header("Content-Type:text/html; charset=utf-8");
    echo "这是 test 操作";
}

要访问该操作,浏览器地址为:

http://localhost/index.php/Index/test

浏览器输出如下:

这是 test 操作

可见要访问其他方法,需要在入口文件 URL 地址后面加上“模块/操作”才可以。关于通过入口文件 URL 地址访问模块方法的具体信息,请参看《ThinkPHP URL 访问模式》一节。

同模块调用其他操作

在同一个模块中,一个操作常常要调用其他操作(一般都是私有方法,通常都是独立的能被重复使用的功能模块),由于是在一个模块里(一个类里),因此使用 $this 可以很方便的调用其他操作:

<?php
class IndexAction extends Action{
    public function index(){
        header("Content-Type:text/html; charset=utf-8");
        echo "第一个例子测试!";
	$this->test();
    }
}
?>

上面是将前面的 index 操作加上调用 test 操作的例子,运行 index 操作输出如下:

第一个例子测试!这是 test 操作

可见不仅 index 里面的 echo 语句执行了,test 操作里面的 echo 也执行了。这部分是属于 PHP 类与对象的知识,更多请参见PHP基础教程之《PHP 类与对象》一节的内容。

跨模块调用操作的例子,请参见本节《ThinkPHP 跨模块调用操作方法》一文的内容。

小结

  1. 控制器类文件名为 IndexAction.class.php 这种固定格式,对应 Index 模块,类名为 IndexAction
  2. 我们自定义的模块里面的类由 ThinkPHP的 基类 Action 继承而来,其遵循 PHP 的类继承属性
  3. 一个 Web 页面对应一个方法(反之则不一定),且该方法必须定义为 public 类型
  4. 一个控制器文件里面只能有一个模块可用,但模块(类)可以有多个方法,也可以没有方法
 
    ThinkPHP 模块与操作
    ThinkPHP 跨模块调用操作方法(A方法与R方法)

zgguan.com(it学习网) — 提供最好的 XHTML教程DIV+CSS教程JavaScript教程PHP教程ThinkPHP教程