如何在不同的Laravel控制器中重用自定义函数?

时间:2019-04-21 06:52:57

标签: laravel

我已经构建了几个函数,几乎可以在所有控制器中重用,此刻我必须将每个函数粘贴到每个控制器中才能正常工作。该代码看起来确实很凌乱,当我迷路时,很难使编辑变得容易。

如何或在哪里声明我的函数,以便可以在所有控制器中重复使用它们而无需将它们粘贴到那里?

2 个答案:

答案 0 :(得分:2)

您可以创建自己的BaseController,在其中存储您重用的功能,然后需要这些功能的控制器可以从BaseController扩展。

另一种方法是创建一个自定义帮助程序文件,其中将包含您重复使用的功能。例如,在app文件夹中创建一个helpers.php文件,然后将其添加到composer.json中以自动加载。

"autoload": {
    "psr-4": {
        "App\\": "app/"
    },
    "files": [
      "app/helpers.php" // here is the helpers file to autoload.
    ],
        "classmap": [
        "database/seeds",
        "database/factories"
    ]
},

此运行后

composer dump-autoload

在您的终端上。

答案 1 :(得分:0)

我更喜欢创建一个服务层并注入到控制器中

Date date = Calendar.getInstance().getTime();
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy", Locale.US);
String dateF = dateFormat.format(date);

或者您可以注入特定动作

class AnyController {
    public function __construct(MyService $myService)
    {
        $this->myService = $myService;
    }

    public function anyFunction()
    {
        // $this->myService->foo()
    }
}

了解更多

http://cogitas.net/show-firebase-admob-banner-ad-in-flutter/