これが私のブートストラップローダーの例です:
if (!defined('APPLICATION_PATH')) {
define('APPLICATION_PATH', realpath(getcwd() . '/../application'));
}
/**
* Add the APPLICATION_PATH and the library dir to the include_path
*/
set_include_path(get_include_path() . PATH_SEPARATOR . APPLICATION_PATH . PATH_SEPARATOR . realpath(APPLICATION_PATH . '/../library'));
/**
* Load the file loader to setup the class autoloader
*/
include_once 'Loader.php';
if (!class_exists('Loader')) {
die('Could not load class loader.');
}
spl_autoload_register('Loader::autoload');
私は個人的に2番目の方法で行きます。私は include_path が大好きであることを学びました。多くのディレクトリを調べるとパフォーマンスが低下する可能性がありますが、それが重要であるとは思えません。また、エラーがパス定数を含めるのを忘れるのを防ぎます。
余談ですが、コントローラなどを に入れ、/application/
いくつかのライブラリを に入れました/library/
。これはすべて、Web ルートの上に移動します。ユーザーがこれらのファイルにアクセスするのを完全に防ぎます。ドキュメント ルートの下にすべてがある場合は、予防策を講じる必要があります。ホストがこれをサポートしている場合 (一部の共有ホストはサポートしていません)、それを利用してください!
アップデート
高負荷のアプリケーションの場合、2 番目の方法を使用するのが良いですか??
私の意見では、あなたがあなたの中にあるものに目を光らせていればinclude_path
(たとえば、私のWindows開発マシンには、必要のないあらゆる種類のものがあります:SQL Server、Rubyなど)、そうでないものはすべて取り除かなければなりません必要な場合は、2 番目の方法で問題ありません。
もう 1 つinclude_path
の方法は、スクリプトの最後に をダンプし、それを php.ini ファイルにハード コードすることです。
しかし、本当に。これがシステム パフォーマンスのボトルネックになるとは思いません。あなたにとってより簡単なものを使用してください。
実行しているサイトでパフォーマンスの問題がありますか、それともこれは予防的なものですか? 事前に最適化したい理由はわかりますが(自分でそれをやめなければなりません)、真剣に。それらの問題が発生したときに対処します。あなたが人気のあるサイトに対処してもらうという幸運な立場にあるとき. 一日の終わりに、いくつかrequire
の s を交換しなければならない場合、それは悪夢ではありません。