是否可以根据 PHP 中的命名空间自动加载文件?

Posted

技术标签:

【中文标题】是否可以根据 PHP 中的命名空间自动加载文件?【英文标题】:Is it possible to autoload a file based on the namespace in PHP? 【发布时间】:2011-02-01 03:24:53 【问题描述】:

标题中提到的内容可能吗? Python 模块样式就是这样。请参阅此示例了解我的确切含义。

index.php

<?php
use Hello\World;
World::greet();

你好/World.php

<?php
namespace Hello\World;
function greet()  echo 'Hello, World!'; 

这可能吗?

【问题讨论】:

【参考方案1】:

是的,看看spl_autoload_register的例子

namespace Foobar;

class Foo 
    static public function test($name) 
        print '[['. $name .']]';
    


spl_autoload_register(__NAMESPACE__ .'\Foo::test'); // As of PHP 5.3.0

new InexistentClass;

上面的例子会输出类似于:

[[Foobar\InexistentClass]]
Fatal error: Class 'Foobar\InexistentClass' not found in ...

这是Autoloader builder的链接,

是一个命令行应用程序,用于自动生成自动加载包含文件的过程。

【讨论】:

所以似乎只能与类有关。我只需要忍受这个:)

以上是关于是否可以根据 PHP 中的命名空间自动加载文件?的主要内容,如果未能解决你的问题,请参考以下文章

php使用命名空间时自动加载机制

在 PHP 5.3 中使用命名空间自动加载?

浅析PHP类的自动加载和命名空间

关于thinkPHP中的自动加载和手动导入

PHP自动加载autoload和命名空的应用

PHP自动加载autoload和命名空的应用