php 跨系统调用,ThinkPHP5.0跨控制器调用 – 伍楼阁

这篇博客介绍了在PHP项目中,如何在同一模块和跨模块内调用控制器的方法,包括使用命名空间、别名以及系统调用方法。通过示例展示了`index`和`admin`两个模块下`controller`目录的代码结构,详细解释了不同调用方式的实现过程,强调了控制器命名规范和路径引用的注意事项。
摘要由CSDN通过智能技术生成

假设项目中有两个模块:“index(前台)”和“admin(后台)”。如下图:

thinkphp5controller.jpg

并且上述这个两个模块下分别都有controller(控制器)代码如下:

admin\controller\Index.php

//声明命名空间

namespace app\admin\controller;

//声明控制器

class Index{

public function index(){

return "我是前台[admin]中的[index]控制器下的[index]方法。";

}

}

index\controller\User.php

//声明命名空间

namespace app\index\controller;

//声明控制器

class User{

//index 方法

public function index(){

return "我是前台[index]中的[User]控制器下的[index]方法。";

}

}

在控制器中调用:index\controller\Index.php

namespace app\index\controller;

use \app\index\controller\User;

use \app\admin\controller\Index as AdminIndex;

class Index

{

public function index()

{

return '默认内容';

}

public function test(){

return '我是用户自己创建的test方法';

}

public function diaoyong(){

//同一模块调用前台[index]模块下的[User]控制器下的[index]方法

$model = new \app\index\controller\User;

echo $model->index();

echo '


';

//同一模块使用 use

$model = new User;

echo $model->index();

echo '


';

//同一模块使用系统方法

$model = controller('User');

echo $model->index();

}

public function diaohoutai(){

//跨模块使用命名空间

$model = new \app\admin\controller\Index;

echo $model->index();

echo '


';

//跨模块使用 use

$model = new AdminIndex;

echo $model->index();

echo '


';

//跨模块使用系统方法

$model = controller('admin/Index');

echo $model->index();

}

}

注意:

1、控制器名称的书写格式必须为驼峰式;

2、如果控制器下有两个相同的控制器,不能重名,要用“as”来去别名,例如上面第六行“as AdminIndex”;

3、命名空间目录前的“\”不能遗漏;

4、跨模块使用系统调用方法时,注意目录用正斜杠:“('admin/Index')”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值