我是靠谱客的博主 健康万宝路,最近开发中收集的这篇文章主要介绍php基类控制器,控制器基类 · ThinkPHP5+控制器 · 看云,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

### 使用控制器基类

系统内置了一个控制器基类`thinkController`,本讲内容就是来讲解下这个控制器基类的功能和用法。

要使用控制器基类的功能,有两种方式:继承`thinkController`基类和使用`Trait`引入`traitscontrollerJump`,继承可以使用基类的完整功能,`Trait`引入的话只有部分功能,后面我们会提到。

#### 控制器初始化

如果控制器下面的每个操作都需要执行一些公共的操作(例如,权限和登录检查),有两种方法,如果你没有继承系统的控制器基类,可以使用架构方法来进行初始化,例如:

~~~

namespace appindexcontroller;

class Index

{

// 架构方法

public function __construct()

{

echo 'init
';

}

public function hello()

{

return 'hello,world';

}

public function test()

{

return 'test';

}

}

~~~

如果已经继承了系统控制器基类,那么可以使用控制器初始化方法:

~~~

namespace appindexcontroller;

use thinkController;

class Index extends Controller

{

// 初始化

protected function _initialize()

{

echo 'init
';

}

public function hello()

{

return 'hello,world';

}

public function test()

{

return 'test';

}

}

~~~

无论使用何种方式,当我们访问下面的URL地址:`http://tp5.com/index/index/hello`页面输出结果为:

> init

> hello,world

而当访问:`http://tp5.com/index/index/test`页面输出结果为:

>

> init

> test

如果应用的所有控制器都需要执行一些公共操作,则只需要让应用控制器都统一继承一个公共的控制器类,然后在该公共控制器类里面定义初始化方法即可。

例如,在公共Base控制器类里面定义初始化方法:

~~~

namespace appindexcontroller;

use thinkController;

class Base extends Controller

{

// 初始化

protected function _initialize()

{

echo 'init
';

}

}

~~~

然后其它控制器都继承Base控制器类:

~~~

namespace appindexcontroller;

use appindexcontrollerBase;

class Index extends Base

{

public function hello()

{

return 'hello,world';

}

public function test()

{

return 'test';

}

}

~~~

> 初始化方法里面的return操作是无效的,也不能使用redirect助手函数进行重定向,如果你是要进行重定向操作(例如权限检查后的跳转)请使用$this->redirect()方法,参考后面的跳转和重定向内容。不过,初始化方法中仍然支持抛出异常。

最后

以上就是健康万宝路为你收集整理的php基类控制器,控制器基类 · ThinkPHP5+控制器 · 看云的全部内容,希望文章能够帮你解决php基类控制器,控制器基类 · ThinkPHP5+控制器 · 看云所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部