模块与操作是 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 跨模块调用操作方法》一文的内容。 小结
|
|