TP(thinkPHP)框架多层控制器和多级控制器的使用示例


Posted in PHP onJune 13, 2018

本文实例讲述了TP(thinkPHP)框架多层控制器和多级控制器的使用。分享给大家供大家参考,具体如下:

多层控制器的目录结构是这样的:

├─Controller 访问控制器
│  ├─UserController.class.php
│  ├─BlogController.class.php
│  ...
├─Event 事件控制器
│  ├─UserEvent.class.php
│  ├─BlogEvent.class.php
│  ...

给App应用添加多层控制器,不需添加任何参数,只需按照如上的方式直接建文件即可。

多层控制器实例化:

/*
 * 多层控制器实例化 即和访问控制器Controller同级目录的Service时 可用D方法或A方法
 * 注:访问控制器的名称是通过DEFAULT_C_LAYER设置的,默认是Controller,访问控制器负责外部交互响应,
    其它的控制器层和外部隔离,只能内部调用。定义其他的控制器层,则不一定必须要继承系统的Controller类或其子类,通常需要输出模版的时候才需要继承Controller类。
 */
D('Admin', 'Service');
//或者
A('User','Event');
A('Admin/Blog','Event');  //假设当前模块是Home模块
// 实例化Home模块的User事件控制器
$User = new \Home\Event\UserEvent();
// 实例化Admin模块的Blog事件控制器
$Blog = new \Admin\Event\BlogEvent();

而多级控制器的目录结构是这样的:

├─Controller 访问控制器
│  ├─User User分级(组)
│  │  ├─UserTypeController.class.php
│  │  ├─UserAuthController.class.php
│  ...
│  ├─Admin Admin分级(组)
│  │  ├─UserController.class.php
│  │  ├─ConfigController.class.php
│  ...

其访问格式:

http://serverName/Home/User/UserType
http://serverName/Home/Admin/User

设置为多级控制器是需要设置配置参数的,即设置控制器的分级层次,例如设置2级目录的控制器层,如下:

'CONTROLLER_LEVEL'   => 2,

其命令空间是这样的;

<?php
namespace Home\Controller\Admin;
use Think\Controller;
class IndexController extends Controller {
  public function hello(){
    echo 'hello';
  }
  public function test(){
    echo 'test';
  }
}

多级控制器的实例化:

可以直接实例化

// 实例化Home模块的User控制器
$User = new \Home\Controller\User\UserTypeController();
// 实例化Admin模块的Blog控制器
$Blog = new \Admin\Controller\Admin\UserController();

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
一个php作的文本留言本的例子(四)
Oct 09 PHP
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
Jun 17 PHP
php生成xml时添加CDATA标签的方法
Oct 17 PHP
PHP嵌套输出缓冲代码实例
May 12 PHP
thinkPHP中验证码的简单使用方法
Dec 26 PHP
PHP检测用户是否关闭浏览器的方法
Feb 14 PHP
100行PHP代码实现socks5代理服务器
Apr 28 PHP
ThinkPHP框架表单验证操作方法
Jul 19 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
PHP空值检测函数与方法汇总
Nov 19 PHP
ThinkPHP防止重复提交表单的方法实例分析
May 10 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
Oct 17 PHP
微信公众号开发之获取位置信息php代码
Jun 13 #PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
Jun 13 #PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
Jun 13 #PHP
thinkphp5.1 文件引入路径问题及注意事项
Jun 13 #PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 #PHP
php中html_entity_decode实现HTML实体转义
Jun 13 #PHP
php处理多图上传压缩代码功能
Jun 13 #PHP
You might like
4月1日重磅发布!《星际争霸II》6.0.0版本更新
2020/04/09 星际争霸
生成php程序的php代码
2008/04/07 PHP
PHP中全面阻止SQL注入式攻击分析小结
2012/01/30 PHP
单点登录 Ucenter示例分析
2013/10/29 PHP
学习php设计模式 php实现适配器模式
2015/12/07 PHP
jquery获取input的value问题说明
2010/08/19 Javascript
Javascript 检测键盘按键信息及键码值对应介绍
2013/01/03 Javascript
Javascript异步编程的4种方法让你写出更出色的程序
2013/01/17 Javascript
利用NodeJS和PhantomJS抓取网站页面信息以及网站截图
2013/11/18 NodeJs
JQuery的$和其它JS发生冲突的快速解决方法
2014/01/24 Javascript
javascript写的异步加载js文件函数(支持数组传参)
2014/06/07 Javascript
JavaScript中函数(Function)的apply与call理解
2015/07/08 Javascript
原生js开发的日历插件
2017/02/04 Javascript
angularjs ui-router中路由的二级嵌套
2017/03/10 Javascript
JavaScript实现简单的双色球(实例讲解)
2017/07/31 Javascript
使用Vue-Router 2实现路由功能实例详解
2017/11/14 Javascript
vue使用混入定义全局变量、函数、筛选器的实例代码
2019/07/29 Javascript
javascript实现贪吃蛇经典游戏
2020/04/10 Javascript
Node.js path模块,获取文件后缀名操作
2020/11/07 Javascript
js实现简易点击切换显示或隐藏
2020/11/29 Javascript
JavaScript中遍历的十种方法总结
2020/12/15 Javascript
[34:08]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS EG
2018/03/30 DOTA
Pyramid Mako模板引入helper对象的步骤方法
2013/11/27 Python
python链接Oracle数据库的方法
2015/06/28 Python
20招让你的Python飞起来!
2016/09/27 Python
python利用lxml读写xml格式的文件
2017/08/10 Python
Django的models中on_delete参数详解
2019/07/16 Python
html5 Canvas实现图片旋转的示例
2018/01/15 HTML / CSS
Tessabit日本:集世界奢侈品和设计师品牌的意大利精品买手店
2020/01/07 全球购物
英国领先的餐饮折扣俱乐部:Gourmet Society
2020/07/26 全球购物
Linux的文件类型
2012/03/07 面试题
财务负责人任命书
2014/06/06 职场文书
党支部四风整改方案
2014/10/25 职场文书
Nginx反向代理多个服务器的实现方法
2021/03/31 Servers
MySQL 开窗函数
2022/02/15 MySQL
Python PIL按比例裁剪图片
2022/05/11 Python