Laravel 帮手 - 移除门面

Laravel helpers - removing the facade

我有一个名为 \App\Helpers 的文件,其中包含几个函数,其中一个用于检查用户是否是管理员

@if(\Helper::isAdmin())
  do something
@endif

我可以向用户模型添加一个方法并获取

$user->isAdmin()

这有点整洁。但是,有什么办法可以做到

@if(isAdmin())
      do something
@endif

是的,您可以通过创建一个包含一些全局函数的文件来做到这一点,例如,在您的 composer.json 文件中添加一个条目,如下所示:

"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\": "app/"
    },
    "files": [
        "helpers/functions.php"
    ]
},

注意 files 部分。然后在项目根目录中创建一个顶级目录 helpers 并在其中创建 functions.php 文件并声明全局函数,例如:

// helpers/functions.php
if (! function_exists('isAdmin')) {
    function isAdmin()
    {
        // You can entirely rewrite the logic here or
        // you can use your existing Helper::isAdmin()

        return \Helper::isAdmin();
    }
}

最后别忘了运行composer dump-autoload。顺便说一句,如果你在 Larave 5.5.x 那么你可以使用 larave'ls new Blade::if() Directives described here.