从一个控制器内部调用一个方法

Posted

技术标签:

【中文标题】从一个控制器内部调用一个方法【英文标题】:Call a method from one controller inside another 【发布时间】:2015-04-20 14:38:37 【问题描述】:

是否可以在 Laravel 5 中从另一个控制器内部的一个控制器调用方法(不管用于访问每个方法的 http 方法)?

【问题讨论】:

***.com/questions/15205239/… 的 L4 技术可能仍然有效。 你当然可以做到这一点,但如果你处于必须这样做的情况,那就是代码的味道!将您需要的功能提取到一个单独的类中,然后将其注入到您的控制器中。 这是一个大禁忌!你应该重构它并为此目的创建一个类,或者一个抽象类并从中扩展你的所有控制器 如果可以的话,我会将您需要调用的任何函数放入一个特征中,并在需要它的控制器中使用该特征。 【参考方案1】:

我就是这样做的。使用use 关键字使OtherController 可用。然后,您可以在实例化时调用该类中的方法。

<?php namespace App\Http\Controllers;

use App\Http\Controllers\OtherController;

class MyController extends Controller 

    public function __construct()
    
        //Calling a method that is from the OtherController
        $result = (new OtherController)->method();
    

还可以查看 Laravel 中 Command 的概念。它可能会给您比上述方法更大的灵活性。

【讨论】:

这是我想做但想知道如何通过Inputs【参考方案2】:
use App\Http\Controllers\TargetsController;

// this controller contains a function to call
class OrganizationController extends Controller 
    public function createHolidays() 
        // first create the reference of this controller
        $b = new TargetsController();
        $mob = 9898989898;
        $msg = "i am ready to send a msg";

        // parameter will be same 
        $result = $b->mytesting($msg, $mob);
        log::info('my testing function call with return value' . $result);
    


// this controller calls it
class TargetsController extends Controller 
    public function mytesting($msg, $mob) 
        log::info('my testing function call');
        log::info('my mob:-' . $mob . 'my msg:-' . $msg);
        $a = 10;
        return $a;
    

【讨论】:

这会创建另一个控制器并调用它的方法。此外,调用的方向甚至与 cmets 中写的相反

以上是关于从一个控制器内部调用一个方法的主要内容,如果未能解决你的问题,请参考以下文章

在 SpringBoot 中调用类内部的端点 [重复]

在 R 中创建内部函数(不能从控制台调用)

Joomla 调用内部控制器功能

三个按钮从控制器调用相同的操作方法 - 确定调用哪一个方法

从模态视图控制器调用方法

如何从模态视图控制器调用呈现视图控制器的方法