Da quel che ho capito, se vuoi usare una classe fuori dal suo namespace devi usare "use"
o il namespace completo
Codice PHP:
use library/conf/Configuration as conf;
$conf = new conf/Configuration('application.setting.ini');
Il problema con autoload è che non gli viene passato solo il nome della classe, ma anche il namespace (conf\Configuration)
Quindi devi prevedere questo quando implementi __autoload(), ad esempio
Codice PHP:
function __autoload($className) {
$parts = explode('//', $className); // ci vanno i backslashes,
@include_once PATH-DOVE-TROVARE-IL-FILE.DS.$parts[count($parts)-1].'.php';
}
Però, come puoi vedere, questo complica le cose se hai due classi con lo stesso nome ma in namespace diversi
Codice PHP:
use library/conf/Configuration as conf;
use library/xml/Configuration as xml;
$xml = new xml/Configuration();
autoload, quale configuration.php deve caricare ?
Quindi sarebbe meglio usare il namespace completo e fare un autoload
Codice PHP:
function __autoload($className) {
// Ti ricordo che viene passato anche il namespace
$class_path = str_replace('//', DS, $className);
@include_once PATH-DOVE-TROVARE-IL-FILE.DS.$class_path.'.php';
// quindi dovresti avere, ad esempio PATH/library/xml/Configuration.php
}
$xml = new library/xml/Configuration();
Quindi dovresti valutare bene come organizzare autoload