Magiczne namespace..

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 {}
}

?>

Więcej informacji http://phpnamespaces.org/