2012-11-19 61 views
7

所以 - 我有一个简单PCR0自动加载机在我bootstrap.php中,应该从厂商目录加载任何PCR0兼容库类...跳过作曲家自动加载文件的生成?

spl_autoload_register(function($classname) { 
    $path = preg_match('/\\\\/', $classname) 
    ? str_replace('\\', DIRECTORY_SEPARATOR, $classname) 
    : str_replace('_', DIRECTORY_SEPARATOR, $classname); 
    $file = VENDORS_PATH . DIRECTORY_SEPARATOR . $path . '.php'; 
    if (file_exists($file)) { 
     require_once($file); 
    } 
}); 

我不知道如果我明白为什么作曲家生成自动加载文件供应商目录(即作曲家目录和autoload.php文件)?

我可以从那些产生自动加载文件停止作曲?或者我错过了什么?我不认为我需要他们?

回答

4

有三个自动加载相关的文件,每一个都具有不同的目的。

  • vendor/autoload.php初始化作曲者的自动加载器。 Composer提供了一个自动加载器来支持作曲家兼容库的加载。
  • 供应商/作曲家/ autoload_classmap.php这个文件被用于由自动装载机类映射,这是任一库,甚至不PSR-0兼容,或生产环境(类映射是通过文件系统比查找更快)。
  • 供应商/作曲/ autoload_namespaces.php这是该作曲家自带

现在你提到你有你自己的PSR-0类加载器,你不应该使用PSR-0自动加载的配置为作曲家的依赖关系 - 你只是应该要求/包括供应商/ autoload.php,并有作曲家把剩下的事情。

这就是为什么没有选项来禁用自动加载文件的产生。最后,作曲家应该让你使用安装的库,并且通过提供你需要的所有加载来启用你。

+0

“ ..要求/包括供应商/ autoload.php并有作曲家..“嗯。恕我直言的依赖管理和自动加载是不同的问题。有些人更喜欢使用Zend \ Loader或其他库来自动加载。我通常更喜欢仅使用PSR0兼容的库,并在引导中使用这个简短的片段 - 而不用担心不同的加载策略。 Zend/Loader还支持来自作曲家文档的类别地图... –

+0

:“对于指定自动载入信息的库,Composer会生成供应商/ autoload.php文件。” - 对我来说,这几乎听起来像Composer呈现自动加载,而不是optonal,但你说它不是? –

+0

指定的图书馆是指通过作曲家安装的图书馆。如果该库的composer.json具有自动加载信息,那么这些自动加载信息将被放入autoload.php。 – ppetermann

0

我个人加入这些文件的.gitignore因为我工作的项目有正常工作的自动加载

相关问题