【发布时间】:2021-11-08 19:27:10
【问题描述】:
非复合 PHP 命名空间示例:
namespace Html;
复合 PHP 命名空间的示例:
namespace NS\Html;
如果我尝试导入非复合 PHP 命名空间,我会收到以下错误:
警告:在第 34 行的 /home/public_html/Samples/PHP/Namespaces/ImportNamespace1.php 中,使用非复合名称“Html”的 use 语句无效
接下来,我尝试使用复合 PHP 命名空间。现在上面的错误(尝试使用命名空间时)消失了,但是当我尝试在导入的命名空间中实例化一个类时,我得到了错误:
致命错误:未捕获的错误:在 /home/public_html/Samples/PHP/Namespaces/ImportNamespace1.php:38 中找不到类“表”
我发现有效的是以下组合:
- 使用复合命名空间
- 导入类而不是命名空间 然后,我可以实例化该类而不会出现任何错误。
这与manual 所说的相反。
请注意,我使用的是 Lightspeed PHP 7.3 版。
这是有效的代码:
命名空间定义:必须是复合的(在文件 Namespace1.php 中):
<?php
namespace NS\Html;
class Table
{
}
?>
导入并使用类(而不是命名空间)(文件 ImportNamespace1.php):
use NS\Html\Table As Table; # Import and alias the class.
$table = new Table();
?>
我想问: 有没有人真正使用过非复合命名空间,然后导入命名空间(而不是类)来实例化一个类?请提供实际代码。
【问题讨论】:
标签: php namespaces