约定
编辑本页约定
的编码标准文档描述了Symfony项目以及内部和第三方包的编码标准。ob娱乐下载本文档描述了核心框架中使用的编码标准和约定,以使其更加一致和可预测。我们鼓励您在自己的代码中遵循它们,但您不需要这样做。
命名方法
当一个对象与相关的“事物”(对象,参数,…)有一个“main”many关系时,方法名被规范化:
get ()
设置()
有()
所有()
替换()
remove ()
clear ()
isEmpty ()
add ()
注册()
count ()
键()
只有在明确存在以下主要关系时,才允许使用这些方法:
- 一个
CookieJar
有很多饼干
对象; - 一个服务
容器
有许多服务和许多参数(由于服务是主要关系,命名约定用于此关系); - 一个控制台
输入
有许多参数和许多选项。没有“main”关系,因此命名约定不适用。
对于许多不适用该约定的关系,必须使用以下方法(其中XXX
是相关事物的名称):
主要的关系 | 其他关系 |
---|---|
get () |
getXXX () |
设置() |
setXXX () |
N/A | replaceXXX () |
有() |
hasXXX () |
所有() |
getxxx () |
替换() |
setxxx () |
remove () |
removeXXX () |
clear () |
clearXXX () |
isEmpty () |
isEmptyXXX () |
add () |
addXXX () |
注册() |
registerXXX () |
count () |
countXXX () |
键() |
N/A |
请注意
而setXXX ()
而且replaceXXX ()
非常相似,但有一个显著的区别:setXXX ()
可以替换或向关系中添加新元素。replaceXXX ()
,另一方面,不能添加新的元素。如果将无法识别的密钥传递给replaceXXX ()
它必须抛出异常。
编写CHANGELOG条目
当在小版本中添加新特性或弃用现有行为时,应添加相关CHANGELOG的条目。
新特性和弃用特性必须在一个名为CHANGELOG.md
它应该在修改后的组件、桥或包的根目录下。
该文件必须使用Markdown语法编写,并遵循以下约定:
- 主标题总是
更新日志
; - 每个条目必须添加到次要版本部分(如
5.3
)作为列表元素; - 不允许有第三级的部分;
- 消息应遵循提交消息约定:行要短,首字母大写,不要以句点结尾,行首使用祈使句动词;
- 必须将新条目添加到列表顶部。
这里有一个完整的例子供参考:
1 2 3 4 5 6 7
更新日志 =========5.3——*添加“MagicConfig”这样就可以进行配置
请注意
主要的更新日志- *
档案在ob娱乐下载symfony / symfony
根目录是在准备发行版时自动生成的,永远不应该手动修改。
不以为然的代码
时不时地,框架中的一些类和/或方法会被弃用;当一个特性实现因为向后兼容性问题而无法更改时,就会发生这种情况,但我们仍然想提出一个“更好的”替代方案。在这种情况下,旧的实现可以弃用.
弃用只能在受影响组件(或包、桥或契约)的下一个小版本中引入。如果它们非常重要,则可以在以前支持的版本中例外地引入它们。
一个新的类(或者接口,或者特性)不能作为废弃的引入,或者包含废弃的方法。
不能将新方法作为已弃用方法引入。
属性将某个特性标记为已弃用@deprecated
PHPDoc到相关类,方法,属性,…
1 2 3
/ * * *@deprecated从Symfoob娱乐下载ny 5.1开始。* /
弃用消息必须指明该特性被弃用的版本,以及在可能的情况下如何替换它:
1 2 3
/ * * *@deprecated从Symfoob娱乐下载ny 5.1开始,使用Replacement代替。* /
当替换对象在另一个命名空间而不是被弃用的类中时,必须使用它的FQCN:
1 2 3
/ * * *@deprecated从Symfoob娱乐下载ny 5.1开始,使用A\B\Replacement代替。* /
还必须触发弃用,以帮助人们进行迁移(需要ob娱乐下载symfony / deprecation-contracts
包):
1
trigger_deprecation (“ob娱乐下载symfony /包名称”,“5.1”,““%s”类已弃用,请改用“%s”。”,弃用::类、更换::类);
当弃用整个类时trigger_deprecation ()
调用应该放在use声明之后,就像这个例子中的fromServiceRouterLoader:
1 2 3 4 5 6 7 8 9 10
名称空间ob娱乐下载\组件\路由\加载程序\DependencyInjection;使用ob娱乐下载\组件\路由\加载程序\ContainerLoader;trigger_deprecation (sob娱乐下载ymfony /路由的,“4.4”,““%s”类已弃用,请改用“%s”。”, ServiceRouterLoader::类,ContainerLoader::类);/ * * *@deprecated从Symfoob娱乐下载ny 4.4开始,改用Symfony\Component\Routing\Loader\ContainerLoader。* /类ServiceRouterLoader扩展ObjectRouteLoader
必须将弃用添加到CHANGELOG.md
受影响部件文件:
1 2 3 4
4.4——*反对的“弃用”类,使用“替换”而不是
它还必须添加到UPGRADE.md
目标次要版本的文件(UPGRADE-4.4.md
在我们的例子中):
1 2 3 4
DependencyInjection -------------------*反对的“弃用”类,使用“替换”而不是
最后,其后果必须加到UPGRADE.md
下一个主要版本的文件(UPGRADE-5.0.md
在我们的例子中):
1 2 3 4
DependencyInjection -------------------*删除“弃用”类,使用“替换”而不是
所有这些任务都是强制性的,必须在同一个pull请求中完成。
移除弃用代码
删除已弃用的代码只能每两年在受影响组件的下一个主要版本(6.0
分支,7.0
分支,等等)。
删除弃用代码时,必须将弃用的结果添加到CHANGELOG.md
受影响部件文件:
1 2 3 4
5.0——*删除“弃用”类,使用“替换”而不是
这个任务是强制性的,必须在同一个pull请求中完成。
命名命令和选项
命令及其选项应该使用祈使句语气来命名和描述。“run”代替“runs”,“list”代替“lists”)。使用命令式语气简洁且与类似的命令行界面(例如Unix手册页)一致。