我跟着 What is the best practice to create a custom helper function in php Laravel 5?
这个问题的两个答案帮助我在laravel 5.1中创建自定义静态类。现在我的问题是该类是否是安全的?因为它是一个静态类。 提前谢谢。
答案 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"
]
},
在终端中按了此命令。