php - 如何创建/使用基于 namespace 的 PHP 自动加载器来加载类以及常量和函数?

标签 php function class namespaces constants

我有以下自动加载器:

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\ConstantsMyApp\Functions 分别位于 MyApp\Constants.phpMyApp\Functions.php )。

最佳答案

PHP 目前(从 PHP 5.5 开始)不支持自动加载除类之外的任何内容。

目前正在讨论自动加载函数和常量的功能,该功能可能会添加到下一版本(即 PHP 5.6)中,但尚未最终确定。

参见https://wiki.php.net/rfc/autofunc了解更多详情。

关于php - 如何创建/使用基于 namespace 的 PHP 自动加载器来加载类以及常量和函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20707118/

相关文章:

ios - 为什么我的 iOS 应用程序中的函数会被调用两次?

javascript - jquery中如何打印函数的返回值

c++ - 使用带有类和构造函数的虚函数来打印书籍信息

ruby - 为什么当我运行 ruby​​ 脚本时,类内部的代码会自动执行?

javascript - 获取 URL 的基本名称,然后将事件类放入导航栏

php - 让我了解 preg_replace

javascript - 向 javascript 函数添加属性

php - 使用变量时如何创建新的类实例

PHP:如何列出两个值不同的多维数组的键?

php - 新的 Google ReCaptcha 实现和提交前检查