Estoy aprendiendo sobre los espacios de nombres en PHP 5.3 y me gustaría usar Namespaces Autoloading. Encontré esto SplClassLoader class, pero no puedo entender cómo funciona.PHP carga automática con SplClassLoader?
Digamos que tengo estructura de directorios de la siguiente manera:
system
- framework
- http
- request.php
- response.php
index.php
SplClassLoader.php
¿Cómo se activa la carga automática de clases? ¿Qué espacios de nombres deben tener request.php
y response.php
?
Este es el request.php
:
namespace framework\http;
class Request
{
public function __construct()
{
echo __CLASS__ . " constructer!";
}
}
y este es el response.php
:
namespace framework\http;
class Request
{
public function __construct()
{
echo __CLASS__ . " constructed!";
}
}
Y en index.php
tengo:
require_once("SplClassLoader.php");
$loader = new SplClassLoader('framework\http', 'system/framework');
$loader->register();
$r = new Request();
me sale este mensaje de error:
Fatal error: Class 'Request' not found in C:\wamp\apache\htdocs\php_autoloading\index.php on line 8
¿Por qué no funciona? ¿Cómo puedo usar SplClassLoader
en mis proyectos para que cargue/requiera mis clases, y cómo debo configurar y nombrar carpetas y espacios de nombres?
Creo que los nombres de su archivo y directorio podrían necesitar comenzar con letras mayúsculas? –
@Adrian Macneil: No en windows, pero tienes razón, esto debería hacerse. – hakre