I oto się stało. Pierwszy raz użyłem przestrzeni nazw w PHP! Nie do wiary? A jednak. Nie było jakichkolwiek problemów z samą instalacją, ponieważ do pobrania jest paczka (pod Win ;)), która zachowuje się jak wszystkie inne pobrane z php.net. Przykłady podane na necie działają, więc nie pozostaje nic innego jak zabrać się za używanie przestrzeni nazw. :)
Oto listingi, które działają:
<?php
import class a:::AFactory;
import class a:::A;
namespace a {
class AFactory {
public static function create() {
return new A;
}
}
private class A {}
}
// works perfectly:
AFactory::create();
// fails with 'Fatal error: Cannot use class 'a:::A' outside of its namespace, as it is private'
// new A;
?>
Oraz:
<?php
import namespace a;
function __autoload($classname) {
foreach (get_imported_namespaces() as $ns) {
$filename = str_replace( ':::', '/', $ns ) . '/' . $classname . '.php';
if (file_exists($filename)) {
require_once($filename); // will require a/A.php
autoload_import_class($classname, $ns); // will import class a:::A
}
}
}
new A;
?>
// file a/A.php:
<?php
namespace a {
class A {}
}
?>