名前空間での自動読み込みで少し問題が発生しました。ここのPHPマニュアルに示されているように:http://us.php.net/manual/en/language.namespaces.rules.php完全修飾名で名前空間関数を自動ロードできるはずです(例:\ glue \ common \ is_email() )。
関数spl_autoload_register(array($ import、 "load"));があります。初期名前空間内ですが、初期名前空間から\ glue \ common \ is_email()を呼び出そうとすると、その自動ロード関数は渡されませんが、新しいis_email()(クラスのコンテキストで)を使用すると渡されます。完全修飾名から自動ロードできるとマニュアルに記載されていませんが、できません:。
これが私のコードです:
namespace glue;
require_once 'import.php';
use glue\import as import;
use glue\core\router as router;
$import = new import();
spl_autoload_register(array($import, "load"));
/** Works and echos glue\router **/
$router = new router();
/** Don't do nothing **/
$cheese = \glue\common\is_email($email);
私もこのコードを試しました:
namespace glue;
require_once 'import.php';
use glue\import as import;
use glue\core\router as router;
use glue\common;
$import = new import();
spl_autoload_register(array($import, "load"));
/** Works and echos glue\router **/
$router = new router();
/** Don't do nothing **/
$cheese = common\is_email($email);
そして最後にこのコード:
namespace glue;
require_once 'import.php';
use glue\import as import;
use glue\core\router as router;
use glue\common\is_email as F;
$import = new import();
spl_autoload_register(array($import, "load"));
/** Works and echos glue\router **/
$router = new router();
/** Don't do nothing **/
$cheese = F($email);