suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Wie verwende ich eine Methode in einem Controller in Laravel, um eine Methode in einem anderen Controller aufzurufen?

Was soll ich tun, wenn eine Methode in einem Controller in Laravel eine Methode in einem anderen Controller aufrufen möchte?

Zum Beispiel:
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(),应该怎么做?
    }
}

Wie soll die bbb()-Methode in BbbController die aaa()-Methode in AaaController aufrufen?

仅有的幸福仅有的幸福2834 Tage vor852

Antworte allen(6)Ich werde antworten

  • 巴扎黑

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

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

    Antwort
    0
  • PHP中文网

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

    通常是不建议这么做的。

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

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

    Antwort
    0
  • PHPz

    PHPz2017-05-16 16:49:42

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

    Antwort
    0
  • PHPz

    PHPz2017-05-16 16:49:42

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

    Antwort
    0
  • 迷茫

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

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

    Antwort
    0
  • 大家讲道理

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

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

    Antwort
    0
  • StornierenAntwort