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

时间:2010-03-26 11:20:03

标签: php python module namespaces autoload

标题中提到的内容是否可行?这是Python模块的风格。请参阅此示例,了解我的意思。

的index.php

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

你好/ World.php

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

这可能吗?

1 个答案:

答案 0 :(得分:5)

是的,请看一下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的链接,

  

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