当前位置: 首页 > 知识库问答 >
问题:

如何在laravel 5中生成全局辅助函数?

宗政永望
2023-03-14

如果我想为一些oauth的东西做一个当前用户()函数,我可以在视图或控制器中使用它(想想rails,你在应用程序控制器中做helper_method:current_user)。

我阅读的所有内容都说明要创建一个helpers文件夹并在那里添加函数,然后您可以这样做helpers::functionName这是正确的方法吗?

创建可用于刀片模板和控制器的辅助函数的“laravel方式”是什么?

共有3个答案

松洛华
2023-03-14

通常,您会发现自己需要一个在整个应用程序中全局访问的实用功能。借用laravel编写默认助手的方式,您可以使用自定义函数扩展该功能。

我更喜欢一个文件而不是一个类,因为我不想为名称空间而烦恼,我希望它的函数可以在没有类前缀的情况下访问,比如:greeting('Brian') 而不是Helper::问候语('Brian') 就像拉威尔对待他们的助手一样。

文件:app/Support/helper.php

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

if (!function_exists('greet')) {
    /**
     * Greeting a person
     *
     * @param  string $person Name
     * @return string
     */
    function greet($person)
    {
        return 'Hello ' . $person;
    }
}

在尝试访问文件函数之前,请记住自动加载文件:作曲家转储-自动加载

$ php artisan tinker
Psy Shell v0.8.17 (PHP 7.0.6 ΓÇö cli) by Justin Hileman
>>> greet('Brian');
=> "Hello Brian"
>>> exit
Exit:  Goodbye.
<p>{{ greet('Brian') }}</p>

有时,您会发现自己想要使用blade指令而不是普通函数。在AppServiceProvider的引导方法中注册刀片指令:app/Providers/AppServiceProvider.php

public function boot()
{
    // ...
    Blade::directive('greet', function ($expression) {
        return "<?php echo greet({$expression}); ?>";
    });
}

用法:

注意:您可能需要清除缓存视图php artisan view:清除

申颖逸
2023-03-14

创建全局函数文件的一种简单有效的方法是直接从Composer自动加载它。composer的自动加载部分接受自动加载的文件数组。

>

添加函数,但不要添加类或命名空间。

<?php

function global_function_example($str)
{
   return 'A Global Function with '. $str;
}

composer.json中的autoload部分添加以下行:

"files": ["app/Helpers/functions.php"]

Laravel 5的示例:

"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app/"
    },
    "files": ["app/Helpers/functions.php"] // <-- Add this line
},

运行作曲家转储-自动加载

完成!您现在可以访问global_function_example('Hello world')形成您的应用程序的任何部分,包括Blade视图。

仲和韵
2023-03-14

在app/Helpers目录中创建一个新文件,将其命名为AnythingHelper.php my helper的一个示例是:

<?php
function getDomesticCities()
{
$result = \App\Package::where('type', '=', 'domestic')
    ->groupBy('from_city')
    ->get(['from_city']);

return $result;
}

通过以下命令为您的助手生成服务提供程序

php artisan make:provider HelperServiceProvider

在新生成的HelperServiceProvider.php的register函数中添加以下代码

require_once app_path('Helpers/AnythingHelper.php');

现在在你的配置/app.php加载这个服务提供程序,你就完成了

'App\Providers\HelperServiceProvider',
 类似资料:
  • 这个安全辅助函数文件包含一系列和安全相关的函数。 加载这个辅助函数 辅助函数可以使用如下代码进行加载:$this->load->helper('security'); 可以使用下面的函数: xss_clean() 这个函数提供了 XSS 过滤,其实它是输入类的一个别名,关于更多的信息可以到那里去查看。 sanitize_filename() 此函数对目录遍历提供保护. 其实它是 安全类(下$thi

  • 安全辅助函数文件包含了一些和安全相关的函数。 加载辅助函数 可用函数 加载辅助函数 该辅助函数通过下面的代码加载: $this->load->helper('security'); 可用函数 该辅助函数有下列可用函数: xss_clean($str[, $is_image = FALSE]) 参数: $str (string) -- Input data $is_image (bool) --

  • 简介 Laravel 包含各种各样的全局「辅助」PHP 函数,框架本身也大量地使用了这些功能;如果你觉得方便,你可以在你的应用中自由的使用它们。 可用方法 数组 & 对象 array_add array_collapse array_divide array_dot array_except array_first array_flatten array_forget array_get arra

  • 列标字符转化 获取扩展版本 查看作者信息

  • 辅助函数,顾名思义,是帮助我们完成特定任务的函数。每个辅助函数文件仅仅是一些函数的集合。例如,URL Helpers 可以帮助我们创建链接,Form Helpers 可以帮助我们创建表单,Text Helpers 提供一系列的格式化输出方式,Cookie Helpers 能帮助我们设置和读取COOKIE, File Helpers 能帮助我们处理文件,等等。 跟其他部分不同的是,辅助函数不是用类的