PHP Composer项目标准目录布局


PHP Composer project standard directory layout

Composer项目是否有任何标准的项目结构,如PHP中的Maven的标准目录布局?

根据扫描上列出的每个包,最新的答案是"是"https://packagist.org以及统计绝大多数软件包正在使用哪些目录,即大多数人在没有协调的情况下无意识地同意的内容:

https://github.com/php-pds/skeleton

目录的简短摘要:

If a package has a root-level directory for ...     
                            ... then it MUST be named:
command-line executables    bin/
configuration files         config/
documentation files         docs/
web server files            public/
other resource files        resources/
PHP source code             src/
test code                   tests/

使用这种布局可以使您的项目与其他可能用作依赖项的项目保持一致。请注意,您不必拥有每个目录,只需要拥有实际承载文件的目录。

典型的布局如下:

src/
vendor/
.git
composer.json
composer.lock
  • 出于兼容性目的,Git和Composer文件应该位于项目的根目录中
  • 源目录应该是源文件的根目录,从类的顶级命名空间开始
  • 供应商目录应包含通过composer导入的所有第三方库

这是最低预期标准,尤其是对于现场项目环境。如果项目是一个库,那么可以省略源目录。

最好的例子是Symfony2标准版:
https://github.com/symfony/symfony-standard

在此之后,前端资产和控制器的约定通常为:

web/
    js/
    css/
    images/
    index.php

本例中的索引文件是您的前端控制器。这应该包括另一个目录中的引导程序,或者使用该目录中的配置初始化环境。

对于Symfony2,这是app目录:
https://github.com/symfony/symfony-standard/tree/master/app

希望这能有所帮助,但请记住,这完全是基于我的经验和观察。