这是我的引导加载程序的示例:
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');
我个人会选择第二种方式。我学会了喜欢 include_path:查看大量目录可能会对性能造成一些影响,但我怀疑这会很重要。它还可以防止错误忘记包含路径常量。
在旁注中,我将我的控制器等放在 . 中/application/
,并在/library/
. 这一切都在网络根目录之上。它完全阻止用户访问这些文件,如果您将所有内容都放在文档根目录下,则必须采取预防措施。如果您的主机支持此功能(某些共享主机不支持),请利用它!
更新
在高负载应用程序的情况下,使用第二种方法是否很好?
在我看来,如果你要密切关注你的内容include_path
(例如,在我的 Windows 开发机器上,我有各种我不需要的东西:SQL Server、Ruby 等)并且要去掉任何不需要的东西需要,那么第二种方法就可以了。
您可以做的另一件事是include_path
在脚本末尾转储 并将其硬编码到您的 php.ini 文件中。
不过,真的。我认为这不会成为您系统性能的瓶颈。使用对您来说更容易的东西。
您在运行的网站上是否存在性能问题,或者这是预防措施?我明白你为什么要预先优化(我必须阻止自己这样做),但要认真。当它们出现时处理这些问题。当您幸运地拥有一个受欢迎的网站来处理它时。归根结底,如果您必须更换几个require
s,这不是一场噩梦。