Ho avuto un piccolo problema con il caricamento automatico nel mio spazio dei nomi. Come mostrato nel manuale PHP qui: http://us.php.net/manual/en/language.namespaces.rules.php dovresti essere in grado di caricare automaticamente le funzioni dello spazio dei nomi con un nome completo completo, ad es. \ Colla \ common \ is_email().PHP Autoloading in Namespaces
In questo caso, ho una funzione spl_autoload_register (array ($ import, "load")); all'interno dello spazio dei nomi iniziale ma ogni volta che provo a chiamare \ glue \ common \ is_email() dallo spazio dei nomi iniziale non passerà la funzione autoload ma quando si usa new_email() (nel contesto di una classe) lo farà. Non capisco il manuale dice che posso caricare automaticamente da nomi completi ma non posso:.
Ecco il mio codice:
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);
Ho provato anche questo codice così:
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);
e alla fine di questo codice:
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);
rimarcato come PHP5.3 come questo è un 5,3-unica domanda. –