thinkphp5 中的应用公共文件怎么理解?

发布于 2022-09-07 03:40:08 字数 226 浏览 10 评论 0

我的后台模块 admin,所有控制器都需要操作鉴权,或者构建操作菜单,或者其它一些公共操作

在忽略中间键的前提下:

我以前的写法都是,写一个“母版”控制器common,然后所有的控制器继承这个母版控制器,在母版中做这些操作,我总觉得这样的写法蹩脚 !

我不是很理解面向对象中的应用公共文件,当然thinkphp 里的 common.php 这种自定义函数,这个不算。

求分析 …

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

凶凌 2022-09-14 03:40:08

我说的不一定对,但是想跟你交流下,我认为应用公共文件包括前段文件个后端文件,后端的就是一些控制器的公共方法,比如说怎删改查,前段的就是一些页头页尾之类的

旧竹 2022-09-14 03:40:08

举个例子
公共模块

public function checkmsg ($phone,$msg);{
    if(手机验证码正确){
            returun true;
    }else{
         throw new Exception("验证码错误");
    }
}

home模块 的一个注册模块要用到验证码功能

public function login($msg,$phone,$password){
    公共模块下的checkmsg($phone,$msg);
    //后面就是添加这个用户的信息到数据等操作。。。
}

admin模块 一个需要通过手机号码验证管理员身份的功能

public function checkauthority($msg,$phone){
     公共模块下的checkmsg($phone,$msg);
    //确认是管理员后就可以进行XXX操作了
}

这样就可以共同用一个东西

幸福不弃 2022-09-14 03:40:08

这种最常见用采用的
BaseController
然后的
AdminController extend BaseController

这样的显然楼主是不想要的

那么来一点“设计模式”

我们可以把依赖先注入到堆栈中,要用的时候再触发呗。

在tp3.2 和tp5中都可以用

这里用TP5

amespace app\index\behavior;

use think\Request;

class Test 
{
    public function run(Request $request, $params)
    {
        // 行为逻辑
    }
}

在应用目录下面或者模块的目录下面定义tags.php文件来统一定义行为,定义格式如下

return [
    //index目录下
    'app_init'=> [
        'app\\index\\behavior\\CheckAuth',
    ],
]

直接执行行为

// 执行 app\index\behavior\CheckAuth行为类的run方法 并引用传入params参数
$result = Hook::exec('app\\index\\behavior\\CheckAuth',$params);

详情见 钩子和行为 :https://www.kancloud.cn/manua...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文