手動であなたが使用されます確かに知って、それかもしれないクラスを残して、すべてのクラスが含まれるように親指の良いルールがあるフォルダをスキャンする必要がいけないこの大会で[OK]を
Core/Cache
Core/Cache/APC
Core/Cache/Memcache
Core/Models
Core/Models/User
Core/Models/Post
オートローダーに使用されます。
たとえば、データベースライブラリクラス、いくつかのタイプの設定クラス、国際化クラス、レジストリクラス、インターフェイス定義クラス、カスタム例外クラス、テンプレートエンジンクラスなどがあります。使用されます。
ですから、 を使用して のindex.phpの上に非常に近い、手動でそれらのすべて(あるいは最初のブラウザによって起動されるものは何でもファイル)を含めるべきではそうで$ file2.php を含めると$ file1.php が含まれます....
(あなたが原因のAPCキャッシュを使用する場合)これは
をあなたに最高のパフォーマンスが得られますし、これらのクラスは、APCによってキャッシュされることが保証されている今、あなたのクラスの内部で使用すると、条件付きで、どちらか一方を使用して、いくつかのロジックを有することができますクラス、状況に依存
例えば
場合(要求:: isAjax()){ AjaxResponder :: sendResponse()。 } else { return $ page; }
ここで、オートローダーには必要ない場合もあるので、オートローダーにAjaxResponderクラスをロードさせても問題ありません。
したがって、クラスが必要ない場合は、オートローダーで処理してください。そうでない場合は手動でインクルードしてください。
本当に簡単なルールです。
また、オートローダー機能内でスマートロジックを使用することは非常に重要です。可能であれば の条件テストを最小限に抑え、クラスファイルを見つけるためにディレクトリスキャンのタイプを使用しないようにしてください。
spl_autoload_registerを使用している場合は、登録されたオートロード機能の順序を覚えておいてください。重要な場合は順序。
スマートオートローダクラスの良い例がここ
http://groups.google.com/group/php-standards/web/psr-0-final-proposal
でお知らせ、それがあれば(file_exists())、またはそのような何かを見るために任意のチェックを使用していません。 これは単に require()を使用し、ファイルが見つからない場合にエラーを発生させるためにrequire関数に依存しています。
オートローダー内では、include_once()またはrequire_onceを使用しないでください。 これは意味がありません。オートローダーが呼び出されないクラスが既に含まれていますが、require_onceとinclude_onceはファイルが既に含まれているかどうかを確認するために余分なチェックを行う必要があります。
まさに私はこれを書こうとしていました。 '__autoload()'はすべてのクラスを読み込むのではなく、現在のスクリプトで使われているクラスだけを読み込みます。これは、フレームワークで使用されるほとんど常に*非常に良い習慣です。 – Shikiryu
フィードバックのためのNanne、Shikiryu! – Steve