laravel里面一个controller中的方法要调用另一个controller中的方法要怎么做?
仅有的幸福
仅有的幸福 2017-05-16 16:47:42
0
6
764

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中

洪涛

通常是不建议这么做的。

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

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

PHPzhong

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

PHPzhong

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

迷茫

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

大家讲道理

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板