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
にはどうすればよいですか? また、フォルダーと名前空間をどのようにセットアップして名前を付ける必要がありますか?