PHP Автозагрузка с SplClassLoader?

Я изучаю пространства имен в PHP 5.3, и я хотел бы использовать автозагрузку пространств имен. Я нашел этот класс SplClassLoader , но не могу понять, как он работает.

Предположим, что у меня есть структура каталогов:

system - framework - http - request.php - response.php index.php SplClassLoader.php 

Как включить автозагрузку класса? Какие пространства имен должны request.php и response.php ?

Это request.php :

 namespace framework\http; class Request { public function __construct() { echo __CLASS__ . " constructer!"; } } 

И это response.php :

 namespace framework\http; class Request { public function __construct() { echo __CLASS__ . " constructed!"; } } 

И в index.php меня есть:

 require_once("SplClassLoader.php"); $loader = new SplClassLoader('framework\http', 'system/framework'); $loader->register(); $r = new Request(); 

Я получаю это сообщение об ошибке:

 Fatal error: Class 'Request' not found in C:\wamp\apache\htdocs\php_autoloading\index.php on line 8 

Почему это не работает? Как я могу использовать SplClassLoader в моих проектах, чтобы он SplClassLoader / требовал мои классы, и как мне настроить и назвать папки и пространства имен?

Solutions Collecting From Web of "PHP Автозагрузка с SplClassLoader?"

Имена файлов и каталогов должны точно соответствовать случаю ваших классов и пространств имен, как в следующем примере:

 system - framework - http - Request.php - Response.php index.php SplClassLoader.php 

Кроме того, вам нужно только объявить корневое пространство имен при регистрации объекта SplClassLoader следующим образом:

 <?php require_once("SplClassLoader.php"); $loader = new SplClassLoader('framework', 'system/framework'); $loader->register(); use framework\http\Request; $r = new Request(); ?> 

Надеюсь это поможет!