У меня была небольшая проблема с автозагрузкой в моем пространстве имен. Как показано в руководстве по PHP здесь: http://us.php.net/manual/en/language.namespaces.rules.php вы должны иметь возможность автоматически загружать функции пространства имен с полным квалифицированным именем, например.\Клей\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);