约定
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 3.4,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
约定
的编码标准文档描述了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 ()
它必须抛出异常。
不以为然的代码
时不时地,框架中的一些类和/或方法会被弃用;当一个特性实现因为向后兼容性问题而无法更改时,就会发生这种情况,但我们仍然想提出一个“更好的”替代方案。在这种情况下,旧的实现可以简单地为弃用.
弃用只能在受影响组件(或包、桥或契约)的下一个小版本中引入。如果它们非常重要,则可以在以前支持的版本中例外地引入它们。
一个新的类(或者接口,或者特性)不能作为废弃的引入,或者包含废弃的方法。
不能将新方法作为已弃用方法引入。
属性将某个特性标记为已弃用@deprecated
PHPDoc到相关类,方法,属性,…
1 2 3
/ * * *@deprecated从Symfoob娱乐下载ny 2.8开始。* /
弃用消息必须指明该特性被弃用的版本,以及在可能的情况下如何替换它:
1 2 3
/ * * *@deprecated从Symfoob娱乐下载ny 2.8开始,使用Replacement代替。* /
当替换对象在另一个命名空间而不是被弃用的类中时,必须使用它的FQCN:
1 2 3
/ * * *@deprecated从Symfoob娱乐下载ny 2.8开始,使用A\B\Replacement代替。* /
一个PHPE_USER_DEPRECATED
还必须触发错误,以帮助人们进行迁移:
1
@trigger_error (sprintf (“自Symfony 2.8以来,“%s”类已弃用,请改用“%s”。”ob娱乐下载,弃用::类、更换::类)、E_USER_DEPRECATED);
没有@-silencing运营商,用户将需要选择退出弃用通知。沉默交换了这种行为,并允许用户在准备好应对它们时选择加入(通过添加一个自定义错误处理程序,如Web调试工具栏或PHPUnit桥接所使用的错误处理程序)。
当弃用整个类时trigger_error ()
调用应该放在use声明之后,就像这个例子中的fromServiceRouterLoader:
1 2 3 4 5 6 7 8 9 10
名称空间ob娱乐下载\组件\路由\加载程序\DependencyInjection;使用ob娱乐下载\组件\路由\加载程序\ContainerLoader;@trigger_error (sprintf (“自Symfony 4.4以来,“%s”类已弃用,请改用“%s”。”ob娱乐下载, ServiceRouterLoader::类,ContainerLoader::类)、E_USER_DEPRECATED);/ * * *@deprecated从Symfoob娱乐下载ny 4.4开始,改用Symfony\Component\Routing\Loader\ContainerLoader。* /类ServiceRouterLoader扩展ObjectRouteLoader
必须将弃用添加到CHANGELOG.md
受影响部件文件:
1 2 3 4
4.4.0----- * Deprecated的“Deprecated”类,使用`更换`而不是.
它还必须添加到UPGRADE.md
目标次要版本的文件(UPGRADE-4.4.md
在我们的例子中):
1 2 3 4
DependencyInjection ------------------- * 弃用“弃用”类,使用`更换`而不是.
最后,其后果必须加到UPGRADE.md
下一个主要版本的文件(UPGRADE-5.0.md
在我们的例子中):
1 2 3 4
DependencyInjection ------------------- * 删除了“弃用”类,使用`更换`而不是.
所有这些任务都是强制性的,必须在同一个pull请求中完成。
移除弃用代码
删除已弃用的代码只能在受影响组件的下一个主要版本(主
分支)。
删除弃用代码时,必须将弃用的结果添加到CHANGELOG.md
受影响部件文件:
1 2 3 4
5.0.0----- *删除' Deprecated '类,使用`更换`而不是.
这个任务是强制性的,必须在同一个pull请求中完成。