在文件
中使用类名之前,有没有办法确保文件存在这是为了避免错误,因为它不存在?我研究了这个,但没有人告诉你该怎么做。也许这就是因为没有办法或者只有秘密php编码器知道的方式所以请不要因为提供的信息量而不喜欢这个问题。
我试过
if (class_exists("Authentication"))
{
use go\Authentication;
}
但是我收到了这个错误
Parse error: syntax error, unexpected 'use' (T_USE) in C:\xampp\htdocs\index.php on line 29
我也试过这个方法
if (file_exists("/go/authentication.php") { use go\Authentication; }
它给了我与previouse方法相同的错误
答案 0 :(得分:1)
use
错误!! 对于即时加载课程而言。您可以按照评论中的建议使用自动加载
旁注。如果您的类位于名称空间中,例如
namespace foo\bar;
class tar{
}
然后检查它的正确方法不存在
class_exists('tar')
而是:
class_exists('\foo\bar\tar')
或
use foo\bar;
class_exists('tar');
答案 1 :(得分:1)
除了你的初衷之外,你可以在the documentation中阅读:
use关键字必须在文件的最外层范围(全局范围)或命名空间内声明中声明。这是因为导入是在编译时完成的,而不是运行时,所以它不能是块作用域。以下示例将显示非法使用use关键字:
这意味着它应该在文件的顶部使用,或者至少在最外层的范围内使用。虽然您的案例可能是最外层的范围,但它会绑定到条件,这会使您的规则非法,类似于文档中提供的示例:
<?php
namespace Languages;
class Greenlandic
{
use Languages\Danish;
...
}
?>
关于您的问题,您可以这样做:
if (class_exists("Authentication"))
$Auth = new Authentication();
但是,请查看autoloading,因为这似乎更有可能是您正在寻找的。 p>