为什么会有";使用「;PHP中的命令不使用include?

为什么会有";使用「;PHP中的命令不使用include?,php,Php,我有这个剧本: 看看这里的文档: use关键字必须在文件的最外层范围(全局范围)或命名空间声明内声明这是因为导入是在编译时完成的,而不是在运行时完成的,因此它不能是块范围的。以下示例将显示非法使用use关键字: 然后: 导入规则基于每个文件,这意味着包含的文件不会继承父文件的导入规则。 结论是你不能做你想做的事。您还需要在包含的文件中导入(也称为使用)。请查看此处的文档: use关键字必须在文件的最外层范围(全局范围)或命名空间声明内声明这是因为导入是在编译时完成的,而不是在运行时完成的,因此它

我有这个剧本:


看看这里的文档:

use关键字必须在文件的最外层范围(全局范围)或命名空间声明内声明这是因为导入是在编译时完成的,而不是在运行时完成的,因此它不能是块范围的。以下示例将显示非法使用use关键字:

然后:

导入规则基于每个文件,这意味着包含的文件不会继承父文件的导入规则。


结论是你不能做你想做的事。您还需要在包含的文件中导入(也称为使用)。

请查看此处的文档:

use关键字必须在文件的最外层范围(全局范围)或命名空间声明内声明这是因为导入是在编译时完成的,而不是在运行时完成的,因此它不能是块范围的。以下示例将显示非法使用use关键字:

然后:

导入规则基于每个文件,这意味着包含的文件不会继承父文件的导入规则。


结论是你不能做你想做的事。您还需要在包含的文件中导入(也称为使用)。

您可能应该熟悉其工作原理。如果要使用Composer autoload,您需要遵守命名约定。否则,您需要编写自己的自动加载器(虽然您可以尝试将其插入Composer,但需要正确配置)。OP没有提到或引用Composer。为什么每个人都在谈论它?@codedge谢谢,我可以用你的提示来解决。你可能应该熟悉它的工作原理。如果你想使用Composer autoload,你需要遵守命名约定。否则,您需要编写自己的自动加载器(虽然您可以尝试将其插入Composer,但需要正确配置)。OP没有提到或引用Composer。为什么每个人都在谈论这件事?@codedge谢谢你的提示,我可以解决这个问题。
include('init/install.php');
$tpl = new Template('templates/install.tpl');
$tpl->set('HEADER', $tpl->getFile('templates/header.tpl'));
$tpl->set('FOOTER', $tpl->getFile('templates/footer.tpl'));
$tpl->set('APP_NAME', Config::APP_NAME);
$tpl->set('APP_VERSION', Config::APP_VERSION);
$tpl->set('BASE_URL', $_SERVER['PHP_SELF']);
$tpl->render();
Fatal error: Uncaught Error: Class 'Template' not found in