我有以下自动加载器:
spl_autoload_register(function($class) {
$class = ltrim($class, '\\');
$filename = '';
$namespace = '';
if ($last_ns_pos = strripos($class, '\\')) {
$namespace = strtolower(substr($class, 0, $last_ns_pos));
$class = substr($class, $last_ns_pos + 1);
$filename = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR;
}
$filename .= str_replace('_', DIRECTORY_SEPARATOR, $class) . '.php';
require $filename;
});
如果我想加载MyApp\Library\ClassOne
,这样可以正常工作,因为该课程位于/MyApp/Library/ClassOne.php
。这符合one function of namespaces;但是,我希望能够自动加载常量和函数的文件(分别位于MyApp\Constants
和MyApp\Functions
中的MyApp\Constants.php
和MyApp\Functions.php
)。
答案 0 :(得分:4)
PHP目前(自PHP 5.5起)不支持自动加载除类之外的任何内容。
自动加载函数和常量的功能目前正在讨论中作为可以添加到下一版本(即PHP 5.6)的功能,但是对此的决定尚未最终确定。
有关详细信息,请参阅https://wiki.php.net/rfc/autofunc。