Laravel 定义没有命名空间的全局函数是正常的做法吗?
Is it normal practice, that Laravel defines global functions without namespaces?
我开始学习了Laravel 6。
在 /vendor/laravel/framework/src/Illuminate/Foundation/helpers.php
它有一些功能甚至没有命名空间!所以它占据了全局命名空间。正常吗?
是的,这是正常的并且是有意的。
您的 helpers.php
文件应该用于不属于任何其他类别的全局函数,例如字符串操作、简单计算等。
如果您注意到函数中的某种模式,您可能希望将它分成一个 class 自己的模式。
所以为了避免一些错误,所有的辅助函数都是这样包装的:
if(!function_exists('my_helper_func')) {
function my_helper_func($param) {
return $param;
}
}
但是,如果其他代码应用相同的内容,这可能会与其他代码发生冲突,您的看法是正确的。这就是为什么 Laravel 最近将所有字符串和数组助手移动到一个 composer 包中,这意味着像 starts_with()
这样的全局函数应该像 \Illuminate\Suppor\Str::startsWith()
.
这样调用
我开始学习了Laravel 6。
在 /vendor/laravel/framework/src/Illuminate/Foundation/helpers.php
它有一些功能甚至没有命名空间!所以它占据了全局命名空间。正常吗?
是的,这是正常的并且是有意的。
您的 helpers.php
文件应该用于不属于任何其他类别的全局函数,例如字符串操作、简单计算等。
如果您注意到函数中的某种模式,您可能希望将它分成一个 class 自己的模式。
所以为了避免一些错误,所有的辅助函数都是这样包装的:
if(!function_exists('my_helper_func')) {
function my_helper_func($param) {
return $param;
}
}
但是,如果其他代码应用相同的内容,这可能会与其他代码发生冲突,您的看法是正确的。这就是为什么 Laravel 最近将所有字符串和数组助手移动到一个 composer 包中,这意味着像 starts_with()
这样的全局函数应该像 \Illuminate\Suppor\Str::startsWith()
.