0

我在一个spl_autoload_register()注册的函数里面。在这里我可以得到类名,但是如何确定它是哪个命名空间呢?

4

2 回答 2

2

试试这个例子。您可以定义一个处理您的呼叫的类

<?php
namespace Example;

#Define a classLoader object
class Loader{
/**
 * Construct and set the autoloader class handler
 */
public function __construct() {
    spl_autoload_register(array($this, 'loadClass'));
}

/**
 * This method is called when an object is loaded
 * 
 * @param string $args
 */
public function loadClass($args){
    var_dump($args);
    //REMOVE: this is only for killing the process
    die;
}
}

//Create your autoloader object
new Loader();

//Calling some class
new \Some\Name\Space\Example();

你应该得到一些这样的回应。

string(23) "Some\Name\Space\Example"
于 2012-11-01T15:42:49.300 回答
1

如果你想要当前的命名空间:

namespace MyProject;

echo '"', __NAMESPACE__, '"'; // outputs "MyProject"

否则你存储在配置文件中或(在应用程序结构的评论中说明)我想......

于 2012-11-01T14:36:53.520 回答