laravel PHP 致命错误:无法重新声明函数

问题描述 投票:0回答:2

我有以下功能:

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

我该如何修复它?

php laravel laravel-5
2个回答
7
投票

这里有一个聪明简单的技巧

将名为 helpers.php 的文件添加到您的应用程序文件夹中

复制您在该文件中编写的函数

添加到“自动加载”块下的composer.json:

 "files": [
  "app/helpers.php"
]

然后运行 Composer 更新,您将在所有代码库上获得可用的功能

在此文件中,您可以添加任何您喜欢的辅助函数,正如已经告诉您的,您应该始终避免在视图中编写 php 代码


0
投票

此错误消息表明您尝试多次声明 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();

这对我来说效果很好。

© www.soinside.com 2019 - 2024. All rights reserved.