搜索

首页  >  问答  >  正文

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

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()方法要怎么做?

仅有的幸福仅有的幸福2832 天前847

全部回复(6)我来回复

  • 巴扎黑

    巴扎黑2017-05-16 16:49:42

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

    回复
    0
  • PHP中文网

    PHP中文网2017-05-16 16:49:42

    通常是不建议这么做的。

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

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

    回复
    0
  • PHPz

    PHPz2017-05-16 16:49:42

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

    回复
    0
  • PHPz

    PHPz2017-05-16 16:49:42

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

    回复
    0
  • 迷茫

    迷茫2017-05-16 16:49:42

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

    回复
    0
  • 大家讲道理

    大家讲道理2017-05-16 16:49:42

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

    回复
    0
  • 取消回复