Hello, I've been writing in the last days a web application on PHP 5.3 (beta1 although RC was released) cause of all the goodies it brings, specially the namespaces, however I've been a bit stuck and *surprised* that the only way to use a PHP class (like Iterators, PDO, etc) is to call them from the global scope, this means: adding the \ at the beginning at the class.
My short question is: is it the only possible way? That means that I need to be very careful when invoking PHP classes, like PDO? Currently when I do: $pdo = new PDO(..); throws an error if I use it from one of "my" namespaced-classes, the error is: Fatal error: Class 'MyNameSpace\PDO' not found in /foo/bar/foome.php throws an error, since spl_autoload can't find the 'MyNameSpace\PDO' class. And yes I know I could create a class that extends from it, but I don't think that's the best idea, just imagine the number of classes I just need to create to cover the PHP classes I plan to use. So, are there other workarounds for this? Like an autoload function for PHP objects created inside a non-global scope (MyNameSpace)? I was reading a thread about namespaces of last year and someone suggested something like: if (($p = strrpos($class, '\\')) !== false) { $name = substr($class, $p+1); if (class_exists("\\$name")) { spl_autoload("\\$name"); // or use "\\$name"; return; } } However that wont work cause: 1) one can't use "use" at the middle of a PHP files, it needs to be used at the beginning afaik, 2) spl_autoload will definetly find the class I'm passing (supposing PDO) but it's useless since what is "expected" by PHP is a MyNameSpace\PDO class. Probably I could use Reflection but I'm not sure if that's the best idea... Any other plans to use PHP objects (SPL, PDO, etc) inside non-global namespaces? Maybe a "PHP" namespace that spl_autoload could catch, like: use PHP; use PHP\SPL; use PHP\ArrayObject; (this idea was given in a previous thread :-)) .. or perhaps having something like spl_namespace_alias, when someone can use inside their autoload functions: spl_namespace_alias('/PDO', $classname); // where $classname is the parameter received by the __autoload functions. I don't have any problems to prepend the "\" but I think PHP should catch that stuff automatically as it does with constants and functions, no? Find a bit annoying to write the "\" to PHP classes I want to use imho. Thanks! -- Pablo Fischer (pablo [arroba/at] pablo.com.mx) -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php