thinkphp 同一个控制器里面的多个方法有共同部分,应该怎样提取出来

发布于 2022-09-06 11:43:43 字数 338 浏览 26 评论 0

clipboard.png

clipboard.png
这些方法都有一些相同的代码,应该放在哪里,然后才能引用,admin控制器吗?怎么引用呢

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

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

发布评论

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

评论(12

笑叹一世浮沉 2022-09-13 11:43:43
private function common()
{}
public function index()
{
    $this->common();
}
public function special()
{
    $this->common();
}
飘逸的'云 2022-09-13 11:43:43

建议抽取一个Service层专注业务逻辑。不牵扯任何controller,需要的时候直接调用即可

梦境 2022-09-13 11:43:43

可以创建一个Logic层,里面只放逻辑部分。

芯好空 2022-09-13 11:43:43

建议加一个数据调度和业务逻辑处理的server层,全部扔在controller后期维护起来很麻烦。

枯叶蝶 2022-09-13 11:43:43

1楼提供的方法确实是一种解决方案。适合不同控制器中重复代码是一个功能性的内容,比如从第一行执行到共同部分最后一行只想得到一个结果的场景,如果不是功能性的内容,重复部分代码执行过程中的数据都需要用到,那么用1楼的方法需要返回重复部分代码执行过程中的所有数据。不知道这样说理解不。

另外一个方法是TP本身就有前置加载,重复部分的内容也可以通过前置加载的方法去用。

第三种方法控制器继承。

反正这种问题解决方法不一而足,根据自己习惯去做就好。

三生池水覆流年 2022-09-13 11:43:43

传统的mvc三层逻辑有很大的局限性,就是一些逻辑,特别是数据处理部分放到控制层和模型层都不合适。所以我一般就如 @xialeistudio 所言,再加一个server层,用来处理数据、通用逻辑等

现在的主流web项目基本也是这样

淤浪 2022-09-13 11:43:43

其实很多种方法啦,主要是把这块代码单独抽出来,比如可以在common的function文件里定义一个方法,然后把这块代码丢进去。一般公共用到的都可以封装成一个函数放在function。减少代码的冗余!也可以建一个Logic层,放到Logic文件里。在控制器需要用到的时候直接调用就可以了。

北方。的韩爷 2022-09-13 11:43:43

service最佳,目前想解决就放到admin_controller

梦纸 2022-09-13 11:43:43

在model层和controller层之间加上一个service层呗!复用操作数据库的方法!

情徒 2022-09-13 11:43:43

独立出来写一个方法啰

素手挽清风 2022-09-13 11:43:43

重复的代码可以考虑封装成一个函数然后去调用

简单爱 2022-09-13 11:43:43

代码复用机制,可以试试trait吗

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