index.php
内の名前空間クラスを取得するために、本当に基本的なオートローダーを設定しましたhello.php
。私の開発環境はUbuntu12.04です。
なぜ私はこれをしようとしているのですか?私はPSR-1とPSR-2のコーディング標準に固執しようとしています。これには次のものが含まれます。
クラス名はStudlyCapsで宣言する必要があります
名前空間は/Vendor/ Classのとおりです(注:大文字)
以下は、大文字に変更を加える前に機能 する私の構造とコードです。
フォルダ構造
- web
-- index.php
-- core
--- hello.php
オートローダー
index.php内に、オートローダーがあります。
set_include_path(__DIR__);
spl_autoload_extensions('.php,.class.php');
spl_autoload_register();
クラスファイル
コアフォルダ内に、hello.phpがあります
namespace core;
class hello {
public function __construct() {
echo 'Constructed!';
}
}
動作するコード
で走る$obj = new \core\hello();
とindex.php
「Constructed!」に戻ります。素晴らしい!
うまくいかないもの
コアフォルダの名前を「Core」に変更します-大文字のCと、の名前空間に注意してhello.php
くださいnamespace Core;
。
では、もう一度試してみましょう$obj = new \Core\hello();
Fatal error: Class 'Core\hello' not found in ...
では、なぜ大文字を使用してPSR標準に準拠できないのですか?私は何が間違っているのですか?