从一个控制器内部调用一个方法
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 中写的相反以上是关于从一个控制器内部调用一个方法的主要内容,如果未能解决你的问题,请参考以下文章