创建自定义助手类?
Posted
技术标签:
【中文标题】创建自定义助手类?【英文标题】:Creating custom helper class? 【发布时间】:2015-10-20 04:17:15 【问题描述】:我关注了 What is the best practice to create a custom helper function in php Laravel 5?
这个问题的两个答案帮助我在 laravel 5.1 中创建自定义静态类。现在我的问题是该类是否安全?因为它是一个静态类。 提前谢谢你。
【问题讨论】:
“安全”是什么意思?什么是“静态类”? @jedrzej.kurylo .我是 laravel 的新手。我创建了一个辅助类。它具有静态方法。ststic 方法是否安全。我的意思是安全问题。 @jedrzej.kurylo 感谢您的评论。 不,就安全性而言,静态方法没有什么不好的。 @jedrzej.kurylo。谢谢你的澄清 【参考方案1】:在帮助程序类中使用静态方法与保护您的应用程序无关。
问题是我们为什么还要使用辅助类/方法以及什么是辅助类/方法:
Laravel 有许多 helper 方法,它们可以帮助您减少编写大量常见任务的代码:
这个帮助类文件位于这里:
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 辅助方法,最好将自己的辅助方法放在类文件中:
示例:我可以在我的应用程序中重用的 Dates 助手类,可能如下所示:
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 的后续版本决定使用同名的 hepler dateFormat1
那么将会发生冲突或覆盖。
因此最好将辅助方法放在类中。
【讨论】:
【参考方案2】:我认为您可以按照指定的方式进行操作。这种方法没有任何问题。我正在使用它,没有问题。
【讨论】:
【参考方案3】:您可以按照以下简单步骤在Laravel 5.x
创建Helper
第一步
在app/Helpers
目录中创建新的helper_name.php
文件
前任。我以这种方式创建了DemoHelper.php
app/Helpers/DemoHelper.php
第 2 步
将创建的Helper(DemoHelper.php)
的条目添加到composer.json文件的autoload部分
"autoload":
"files": [
"app/Helpers/Helper.php",
"app/Helpers/DemoHelper.php"
]
,
第 3 步
最后,composer dump-autoload
在终端中点击此命令。
【讨论】:
我想你错过了这个问题。 嗨@Don't Panic,编写无类助手的最佳方法,在助手中编写类和导入类是不好的做法。因此,您可以将简单的正常重复使用的计算/逻辑功能放入助手中。对于此要求,您可以使用特征,这是一种很好的做法。 OP 包含一个指向问题的链接,显示他如何创建他的助手。您的回答只是重复了另一个问题中的内容。所以你正在向他展示如何做他已经做过的事情。但我评论的重点是,这甚至不是 OP 所要求的(显然 - 他已经做到了)。以上是关于创建自定义助手类?的主要内容,如果未能解决你的问题,请参考以下文章