Php 使用函数不';不能在if-else语句中工作

Php 使用函数不';不能在if-else语句中工作,php,Php,我试图在Apache和php5+中的if-else语句中使用browscap-php。我使用下面这样的文件作为示例 工作示例: <?php require 'Browscap.php'; use phpbrowscap\Browscap; if ($newdata == "1") { $current_browser = $bc->getBrowser(); } else { } ?> <?php if (

我试图在
Apache
php5+
中的if-else语句中使用
browscap-php
。我使用下面这样的文件作为示例

工作示例:

<?php 
   require 'Browscap.php';
   use phpbrowscap\Browscap;

   if ($newdata == "1") { 
       $current_browser = $bc->getBrowser();
   } else {

   }

?>
<?php 

   if ($newdata == "1") { 
       require 'Browscap.php';
       use phpbrowscap\Browscap;
       $current_browser = $bc->getBrowser();
   } else {
   // do not load anything dealing with browscap
   }
?>

不起作用示例:

<?php 
   require 'Browscap.php';
   use phpbrowscap\Browscap;

   if ($newdata == "1") { 
       $current_browser = $bc->getBrowser();
   } else {

   }

?>
<?php 

   if ($newdata == "1") { 
       require 'Browscap.php';
       use phpbrowscap\Browscap;
       $current_browser = $bc->getBrowser();
   } else {
   // do not load anything dealing with browscap
   }
?>


工作示例工作正常,但第二次我将
use
函数放在if-else语句中,它不工作。我不想在不需要检查该信息时加载
browscap
。我该怎么做呢?

您可以将use语句置于if之上。use语句不加载任何内容。require语句是加载文件的语句,您可以将其保存在if中。

您可以将use语句置于if之上。use语句不加载任何内容。require语句是加载文件的语句,您可以将其保存在if中。

引用自:

use关键字必须在文件的最外层作用域中声明 全局范围)或内部命名空间声明。这是因为 导入是在编译时完成的,而不是在运行时,因此不能执行 块作用域

(我的重点)

引用:

use关键字必须在文件的最外层作用域中声明 全局范围)或内部命名空间声明。这是因为 导入是在编译时完成的,而不是在运行时,因此不能执行 块作用域


(我的重点)

你说的“不起作用”到底是什么意思?@Pekka웃 它会导致
500内部服务器错误
,并且我有错误报告,但它没有显示任何内容。无论如何,您实际上不需要
使用phpbrowscap\Browscap
。当您想要实例化该类时,可以只调用完全限定的命名空间。
use
不加载anything@AbbyEPHP生成的任何500个错误(与Apache或其他错误相反)都会有一条相关的错误消息,而
display\u errors
应该会导致显示该错误。您的确切意思是什么“不行”?@Pekka웃 它会导致
500内部服务器错误
,并且我有错误报告,它没有显示任何内容。无论如何,您实际上不需要
use phpbrowscap\Browscap
。您可以在想要实例化该类时调用完全限定的命名空间。
use
不加载anything@AbbyEPHP生成的任何错误(与Apache或其他原因引起的事情相反)将有一个相关的错误消息,并且
display\u errors
应该会导致显示该错误消息。我现在明白了,我只是要使用if-else语句中包含的,然后将
use
函数放在文件的外部范围上。谢谢!我现在明白了,我只是要使用if-else语句中包含的,然后使用put使用文件外表面上的
功能。谢谢!