我的命名空间中的自动加载有一点问题。如此处的 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() 时,它不会传递该自动加载函数,但在使用 new 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);