创建自定义帮助程序类?

时间:2015-07-29 09:14:05

标签: php laravel

我跟着 What is the best practice to create a custom helper function in php Laravel 5?

这个问题的两个答案帮助我在laravel 5.1中创建自定义静态类。现在我的问题是该类是否是安全的?因为它是一个静态类。 提前谢谢。

3 个答案:

答案 0 :(得分:5)

在助手类中使用静态方法与保护应用程序无关。

问题是为什么我们甚至使用辅助类/方法以及什么是辅助类/方法:

Laravel有许多辅助方法,它可以帮助您最大限度地减少对常见任务的大量代码的写入:

此助手类文件位于此处:

vendor\laravel\framework\src\Illuminate\Foundation\helpers.php

这些是Laravel开箱即用的一些辅助方法:

abort - 使用给定数据抛出HttpException。

if (!function_exists('abort')) {
    /**
     * Throw an HttpException with the given data.
     *
     * @param  int     $code
     * @param  string  $message
     * @param  array   $headers
     * @return void
     *
     * @throws \Symfony\Component\HttpKernel\Exception\HttpException
     * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
     */
    function abort($code, $message = '', array $headers = [])
    {
        return app()->abort($code, $message, $headers);
    }
}

asset - 为应用程序生成资产路径。

if (!function_exists('asset')) {
    /**
     * Generate an asset path for the application.
     *
     * @param  string  $path
     * @param  bool    $secure
     * @return string
     */
    function asset($path, $secure = null)
    {
        return app('url')->asset($path, $secure);
    }
}

还有更多......

所以你希望拥有自己的Helper方法,也许是因为它目前在Laravel Helpers中不可用。

为了避免重写Laravel辅助方法,最好将自己的辅助方法放在类文件中

示例:我可以在我的应用程序中重用的日期助手类可能如下所示:

namespace App\Helpers;

class DateHelper {

    public static function dateFormat1($date) {
        if ($date) {
            $dt = new DateTime($date);

        return $dt->format("m/d/y"); // 10/27/2014
      }
   }
}

那么你可以像这样使用它:

{{dateHelper::dateFormat1($user->created_at)}}

如果我们不想使用课程,我们可以这样做:

//helper method for date
function dateFormat1($date) {
            if ($date) {
                $dt = new DateTime($date);

            return $dt->format("m/d/y"); // 10/27/2014
          }
       }

并像这样使用它:

{{ dateFormat1($user->created_at) }}

但是,如果Laravel的后续版本决定使用同名的dateFormat1,那么将会发生冲突或覆盖。

因此,最好在课程中使用辅助方法。

答案 1 :(得分:1)

我认为你可以按规定做。这种方法没有错。我使用它,没有麻烦。

答案 2 :(得分:0)

您可以按照以下简单步骤在success: function (data) { if(data.msg == "success"){ window.location.href = "redirectURL"; } alert(data); } 中创建Helper

  • 第1步

    Laravel 5.x目录中创建新的helper_name.php文件    例如我已经以app/Helpers

  • 的方式创建了DemoHelper.php
  • 第2步

    将创建的app/Helpers/DemoHelper.php的条目添加到自动加载部分的composer.json文件中

    Helper(DemoHelper.php)
  • 第3步

    最后,"autoload": { "files": [ "app/Helpers/Helper.php", "app/Helpers/DemoHelper.php" ] }, 在终端中按了此命令。