Uczyłem się o przestrzeniach nazw w PHP 5.3 i chciałbym używać Przestrzeni automatycznej. Znalazłem to SplClassLoader class, ale nie mogę zrozumieć, jak to działa.Automatyczne ładowanie PHP za pomocą SplClassLoader?
powiedzmy mam struktury katalogów takiego:
system
- framework
- http
- request.php
- response.php
index.php
SplClassLoader.php
Jak włączyć automatyczne ładowanie klasy? Jakie przestrzenie nazw powinny mieć: request.php
i response.php
?
To request.php
:
namespace framework\http;
class Request
{
public function __construct()
{
echo __CLASS__ . " constructer!";
}
}
I to jest response.php
:
namespace framework\http;
class Request
{
public function __construct()
{
echo __CLASS__ . " constructed!";
}
}
I index.php
mam:
require_once("SplClassLoader.php");
$loader = new SplClassLoader('framework\http', 'system/framework');
$loader->register();
$r = new Request();
otrzymuję komunikat o błędzie:
Fatal error: Class 'Request' not found in C:\wamp\apache\htdocs\php_autoloading\index.php on line 8
Dlaczego to nie działa? Jak mogę używać SplClassLoader
w moich projektach, aby ładować/wymagać moich zajęć i jak mam skonfigurować i nazwać foldery i przestrzenie nazw?
Myślę, że Twoje nazwy plików i katalogów mogą wymagać wielkich liter? –
@Adrian Macneil: Nie w Windows, ale masz rację, to powinno być zrobione. – hakre