首页  >  文章  >  后端开发  >  如何在 Laravel 5 中从一个控制器访问另一个控制器中的方法?

如何在 Laravel 5 中从一个控制器访问另一个控制器中的方法?

Barbara Streisand
Barbara Streisand原创
2024-10-30 02:59:29645浏览

How Can I Access Methods from One Controller in Another Controller in Laravel 5?

在 Laravel 5 中跨控制器访问控制器方法

在 Laravel 中使用多个控制器时,可能存在需要从一个控制器访问另一个控制器中的方法的情况。这可以通过各种技术来实现,如下所述。

使用应用程序外观

此方法涉及使用应用程序外观直接访问控制器方法:

<code class="php">app('App\Http\Controllers\PrintReportController')->getPrintReport();</code>

而这是可行的,但不建议用于代码组织目的。

继承

另一个选项是继承包含所需方法的控制器。例如,如果 SubmitPerformanceController 需要从 PrintReportController 访问 getPrintReport 方法:

<code class="php">class SubmitPerformanceController extends PrintReportController {
    // ...
}</code>

但是,这种方法可能会导致继承不必要的方法。

Traits

Traits 是在控制器之间共享通用功能且没有继承缺点的首选解决方案。以下是如何使用特征:

创建特征

在应用程序/特征中定义特征:

<code class="php">trait PrintReport {

    public function getPrintReport() {
        // ...
    }
}</code>

包含特征在控制器中

将特征添加到两个控制器:

<code class="php">class PrintReportController extends Controller {
    use PrintReport;
}

class SubmitPerformanceController extends Controller {
    use PrintReport;
}</code>

通过这种方法,两个控制器都可以通过 $this->getPrintReport() 访问 getPrintReport 方法。

其他提示

  • 考虑您正在访问的控制器的命名空间。
  • 如果路由在routes.php中映射,则可以直接调用控制器方法。
  • 有关特征的更多见解,请参阅官方文档。

以上是如何在 Laravel 5 中从一个控制器访问另一个控制器中的方法?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn