我有以下功能:
function get_user_browser() {
$u_agent = $_SERVER['HTTP_USER_AGENT'];
$ub = 'unknown';
if (preg_match('/Trident\/7.0; rv:11.0/', $u_agent)) {
$ub = "ie ie-11";
}
elseif(preg_match('/MSIE/i', $u_agent)) {
$ub = "ie";
}
elseif(preg_match('/Chrome/i', $u_agent)) {
$ub = "chrome";
}
elseif(preg_match('/Firefox/i', $u_agent)) {
$ub = "firefox";
}
elseif(preg_match('/Safari/i', $u_agent)) {
$ub = "safari";
}
elseif(preg_match('/Opera/i', $u_agent)) {
$ub = "opera";
}
return 'browser-'.$ub;
}
我在两个刀片中声明了这个函数,但我得到了这个错误:
FPHP 致命错误:无法在线重新声明 get_user_browser() (之前在 /home/storage/framework/views/0800146a0e35b205e9a66bb2f00ffb2f:7 中声明) 7
我该如何修复它?
这里有一个聪明简单的技巧
将名为 helpers.php 的文件添加到您的应用程序文件夹中
复制您在该文件中编写的函数
添加到“自动加载”块下的composer.json:
"files": [
"app/helpers.php"
]
然后运行 Composer 更新,您将在所有代码库上获得可用的功能
在此文件中,您可以添加任何您喜欢的辅助函数,正如已经告诉您的,您应该始终避免在视图中编写 php 代码
此错误消息表明您尝试多次声明 get_user_browser() 函数
声明前检查函数是否存在
namespace App\Helpers;
if (!function_exists('get_user_browser')) {
function get_user_browser() {
$u_agent = $_SERVER['HTTP_USER_AGENT'];
$ub = 'unknown';
if (preg_match('/Trident\/7.0; rv:11.0/', $u_agent)) {
$ub = "ie ie-11";
}
elseif(preg_match('/MSIE/i', $u_agent)) {
$ub = "ie";
}
elseif(preg_match('/Chrome/i', $u_agent)) {
$ub = "chrome";
}
elseif(preg_match('/Firefox/i', $u_agent)) {
$ub = "firefox";
}
elseif(preg_match('/Safari/i', $u_agent)) {
$ub = "safari";
}
elseif(preg_match('/Opera/i', $u_agent)) {
$ub = "opera";
}
return 'browser-'.$ub;
}
}
然后,调用函数时,需要包含命名空间
$browser = \App\Helpers\get_user_browser();
这对我来说效果很好。