pds/skeleton PHP 扩展架构规范(扩展开发必读)

file

pds/skeleton#

项目地址:https://github.com/php-pds/skeleton

本文描述了所有适用于 PHP 包的标准文件系统框架。

请查阅 https://github.com/php-pds/skeleton_resear... 获取背景资料。

用于 验证生成 符合 PDS 标准包的命令行工具说明 在此

关键词 "必须","一定不可","需要","将要", "将不","应该",
"不该","推荐","可以",和 "可选" 在本文中描述语义遵循 RFC 2119 标准。

概览#

一个包在根级别下的目录必须使用如下名称:

如果一个包中含有根级别的目录 ... ... 那么它们必须命名如此:
命令行可执行文件 bin/
配置文件 config/
文档 docs/
web 服务器文件 public/
其他资源文件 resources/
PHP 源码 src/
测试代码 tests/

一个包在根级别下的文件必须使用如下名称:

如果一个包中含有根级别的文件... ... 那么它们必须命名如此:
发布版本间的更新日志 CHANGELOG(.*)
参与者指南 CONTRIBUTING(.*)
证书许可 LICENSE(.*)
包简介 README(.*)

一个包应该包含一个根级文件,表明许可和
包内容的版权条款。

根级目录#

bin/#

如果一个包提供一个根级目录用来存放命令行可执行文件,则它必须被命名为 bin/

本文将不再另外定义该结构和内容目录。

config/#

如果一个包提供一个根级目录用来存放配置文件,则它必须被命名为 config/

本文将不再另外定义该结构和内容目录。

docs/#

如果一个包提供一个根级目录用来存放文档,则它必须被命名为 docs/

本文将不再另外定义该结构和内容目录。

public/#

如果一个包提供一个根级目录用来存放 web 服务器文件,则它必须被命名为 public/

本文将不再另外定义该结构和内容目录。

注: 这个目录可以作为 web 服务器文档的根目录。
另一种方式,这些文件可以被其他代码动态提供,
复制或者创建符号链接到「真正」的文档根目录,
或以其他方式管理,以便它们在网上流通。

resources/#

如果一个包提供一个根级目录用来存放其他资源文件文件,则它必须被命名为 resources/

本文将不再另外定义该结构和内容目录。

src/#

如果包为 PHP 源代码提供了一个根目录, 则必须被命名为 src/.

此发布版本不额外定义结构和目录内容。

tests/#

如果包为测试文件提供了一个跟目录,则必须被命名为 tests/.

此发布版本不额外定义结构和目录内容。

Other Directories#

The package MAY contain other root-level directories for purposes not described
by this publication.

This publication does not define the structure and contents of the other
root-level directories.

Root-Level Files#

CHANGELOG#

If the package provides a root-level file with a list of changes since the last
release or version, it MUST be named CHANGELOG.

It MAY have a lowercase filename extension indicating the file format.

This publication does not otherwise define the structure and contents of the
file.

参与贡献#

如果一个包提供一个根级文件用来描述如何向它贡献代码,则该文件必须被命名为 CONTRIBUTING

可以有一个小写的文件扩展名。

本文将不再另外定义该结构和内容目录。

证书#

在拷贝当前包代码时,使用者可能会违反版权法中未经许可的知识产权条款, 当前包应该包含一个根级文件用以表明包裹内容的许可和版权条款。

如果一个包提供一个根级文件用以表示许可和版权条款,则该文件必须被命名为 LICENSE

可以有一个小写的文件扩展名。

本文将不再另外定义该结构和内容目录。

README 文件#

如果包提供一个关于他自身信息的根级文件,则必须被命名为 README

他可能有一个小写的文件扩展名代表文件格式。

此发行版不额外定义结构和目录内容。

其他文件#

包中可能包含其他根级文件来说明未在发行版中描述的目的。

此发行版不去定义结构和其他根级文件的内容。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://github.com/php-pds/skeleton/tree...

译文地址:https://learnku.com/laravel/t/9875/pdssk...

本帖已被设为精华帖!
本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。