laravel里面一个controller中的方法要调用另一个controller中的方法要怎么做?
仅有的幸福
仅有的幸福 2017-05-16 16:47:42
[PHP讨论组]

laravel里面一个controller中的方法要调用另一个controller中的方法要怎么做?

比如:
AaaController.php

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class AaaController extends Controller
{
    public function aaa()
    {
        //...
    }
}

BbbController.php

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class BbbController extends Controller
{
    public function bbb()
    {
        //这里要调用aaa(),应该怎么做?
    }
}

BbbController中的bbb()方法要调用AaaController中的aaa()方法要怎么做?

仅有的幸福
仅有的幸福

全部回复(6)
巴扎黑

这说明你没有把aaa方法中的逻辑提取出来, orm可以放在Repository, 逻辑操作可以放在service中

PHP中文网

通常是不建议这么做的。

$ctrl = \App::make(\App\Http\Controllers\AaaController::class);
\App::call([$ctrl, "aaa"]);

为什么要这么复杂而不是直接new一个AaaController然后直接调用方法?因为要处理依赖注入。

PHPz

在B控制器里创建一个A控制器的实例
这么用是可以用,但是我不知道这么用合不合规矩

PHPz

(new AaaController ())->aaa();

迷茫

你可以建一个BaseController,其他两个congtroller共同继承这个controller,一些公用方法可以放置到BaseController里面,或者加个helper文件

大家讲道理

如果你非要这么做的话,可以把被调用的方法定义成静态方法。然后类名直接调用。不过很不建议这么做

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号