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 に答える