我有两个文件,第一个是Test.php,它看起来像这样:
<?php
namespace My\Namespaces\Test;
class Test {
const ALERT_EMAIL = "AlertEmail";
const ALERT_SMS = "AlertSms";
const ALERT_NOTIFICATION = "AlertNotification";
} // class - EnumAlertType
?>
和另一个文件尝试使用Test.php中的const
<?php
use My\Namespaces\Test;
$a = Test::ALERT_SMS;
?>
但我仍然遇到Class 'My\Namespaces\Test' not found
错误,我不确定我是否正确使用了命名空间。感谢
答案 0 :(得分:2)
您需要在此处区分两个术语:包括和导入。前者是在当前正在执行的脚本中添加代码,后者是在代码中轻松使用它们。包括litteraly复制粘贴代码到当前脚本,以便以后可以使用。
因此,您需要包含(require_once()
)类Test
的代码到将使用该代码的文件中。事实上,您之后可以导入(use
)(特别是如果文件位于单独的文件夹中)。因此,您需要这样做:
<?php
require_once('Test.php'); // include the code
use My\Namespaces\Test; // import it if you want but not useful as the two file are in the same folder
$a = Test::ALERT_SMS; // access to class constants
你应该开始深入研究spl_autoloader_register()
功能。