编码标准
编辑该页面编码标准
ob娱乐下载Symfony的代码是由成千上万的世界各地的开发人员。让每段代码看起来和感觉熟悉,Symfony定义了一些编码标准必须遵循所有的贡献。ob娱乐下载
基于这些Syob娱乐下载mfony的编码标准PSR-1,PSR-2,PSR-4和PSR-12标准,所以你可能已经知道他们中的大多数。
让你的代码遵循编码标准
代替手动审查代码,Symfony使它简单的代码,以确保你的贡献匹配预期的语法。ob娱乐下载首先,安装PHP CS工工具然后,运行这个命令来解决任何问题:
1 2
美元cd你的项目/美元php php-cs-fixer。phar修复- v
如果你忘了运行这个命令,使拉请求与任何语法问题,我们的自动化工具将提醒你,并提供解决方案。
ob娱乐下载Symfony详细编码标准
如果你想详细了解Symfony编码标准,这里有一个简短的例子包ob娱乐下载含大多数特性描述如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
/ * *这个文件是Symfony包的一部分。ob娱乐下载* * (c)法效力<法比安@ob娱乐下载symfonycom > * *完整的版权和许可信息,请查看许可*文件分发源代码。* /名称空间Acme;使用其他\Qux;/ * * *编码标准示范。* /类FooBar{公共常量SOME_CONST =42;私人字符串美元fooBar;/ * * *@param假美元一些参数描述* /公共函数__construct(字符串美元假、私人Qux美元qux,){美元这- >fooBar =美元这- >transformText (美元假);}/ * * *@deprecated* /公共函数someDeprecatedMethod():字符串{trigger_deprecation (“ob娱乐下载symfony /包名称”,“5.1”,“% s()方法已被弃用,使用Acme \记者::someMethod ()。”,__METHOD__);返回巴兹::someMethod ();}/ * * *转换输入作为第一个参数。* *@param选择一个选项的集合是美元转换中使用* *@throws\ RuntimeException当一个无效的选择* /提供私人函数transformText(bool |字符串美元假数组,美元选项= []):哦?字符串{美元defaultOptions= (“some_default”= >“值”,“another_default”= >“更多的价值观”,);foreach(美元选项作为美元的名字= >美元价值){如果(! array_key_exists (美元的名字,美元defaultOptions)){扔新\ RuntimeException (sprintf (未识别的选项“% s”的,美元的名字));}}美元mergedOptions= array_merge (美元defaultOptions,美元选项);如果(真正的= = =美元假){返回“东西”;}如果(\ is_string (美元假)){如果(“值”= = =美元mergedOptions(“some_default”){返回substr (美元假,0,5);}返回函数美元假);}返回零;}/ * * *执行一些基本的操作对于一个给定的值。* /私人函数performoperation中(混合美元价值= null,保龄球美元theSwitch= false):无效{如果(!美元theSwitch){返回;}美元这- >qux- >doFoo (美元价值);美元这- >qux- >doBar (美元价值);}}
结构
- 每个逗号分隔符后添加一个空格;
- 添加一个空间二元操作符(
= =
,& &
…),除了连接(。
)操作符; - 一元操作符(
!
,- - -
附近,…)变量的影响; - 总是使用相同的比较除非你需要类型的;
- 使用尤达条件当检查一个变量与表达式,以避免意外在条件语句(这适用于作业
= =
,! =
,= = =
,= = !
); - 添加一个逗号在多行数组,每个数组项后即使最后一个;
- 添加一个空白行
返回
语句,除非仅返回语句组内(如一个如果
声明); - 使用
返回null;
当一个函数显式地返回零
值和使用返回;
当函数返回无效
值; - 不添加
无效
返回类型的方法测试; - 使用括号来表示控制结构身体无论它包含的语句数;
- 每个文件定义一个类,这并不适用于私人助手类不打算从外部被实例化,因此并不担心PSR-0和PSR-4自动装载标准;
- 声明类的继承和实现接口类名在同一行;
- 声明类属性之前方法;
- 首先声明公共方法,然后最后私营企业的保护。这条规则的例外是类构造函数和
设置()
和tearDown ()
PHPUnit)测试方法,必须始终是第一个方法来增加可读性; - 申报同一条直线上的所有参数的方法/函数名,无论有多少参数。唯一的例外是构造函数的使用方法构造函数特性升级,每个参数都必须在一个新行后面的逗号;
- 使用括号在实例化类时不管参数构造函数的数量;
- 异常和错误信息字符串的连接必须使用sprintf;
异常和错误消息必须不包含引号,即使指技术元素(如一个方法或变量名)。必须使用双引号的时间:
1 2
——预期“foo”选项之一……+预期“foo”选项之一……
- 异常和错误消息必须以大写字母开始,用一个点完成
。
; 异常,错误和弃用消息包含一个类名必须使用
get_debug_type ()
而不是::类
检索:1 2
——抛出新\异常(sprintf('命令“% s”失败了。' $命令::类));+抛出新\异常(sprintf('命令“% s”失败了。”,get_debug_type(命令)美元));
- 不要使用
其他的
,elseif
,打破
后如果
和情况下
条件返回或扔东西; - 不要使用空格
(
抵消访问器和前]
抵消访问器; - 添加一个
使用
声明为每一个类,它不是全局命名空间的一部分; - 当PHPDoc标签
@param
或@return
包括零
和其他类型,总是零
结束时的列表类型。
命名约定
- 使用camelCase为PHP变量、函数和方法名,参数(如。
acceptableContentTypes美元
,hasSession ()
); - 使用snake_case(如配置参数和树枝模板变量。
framework.csrf_protection
,http_status_code
); - (如使用SCREAMING_SNAKE_CASE常量。
InputArgument: IS_ARRAY
); - 使用UpperCamelCase枚举的情况下(如。
InputArgumentMode: IsArray
); - 使用名称空间对所有PHP类、接口、特征和枚举UpperCamelCase他们的名字(如。
ConsoleLogger
); - 前缀的所有抽象类
文摘
除了PHPUnit)* TestCase
。请注意一些早期Symfony类不遵守本公约和没ob娱乐下载有被重命名原因向后兼容性。然而,所有的新抽象类必须遵循此命名约定; - 后缀接口与
接口
; - 后缀特征与
特征
; - 不要使用一个专用的后缀等类或枚举(例如
类
或枚举
除了下面列出的情况下)。 - 后缀异常与
异常
; - 前缀PHP与服务配置的属性
作为
(如。# (AsCommand)
,# (AsEventListener)
等); - 前缀PHP与控制器参数的属性
地图
(如。# (MapEntity)
,# (MapCurrentUser)
等); - 使用UpperCamelCase命名(比如PHP文件。
EnvVarProcessor.php
)和蛇的命名树枝模板和网络资产(section_layout.html.twig
,index.scss
); - 在PHPDocs类型提示和铸造、使用
bool
(而不是布尔
或布尔
),int
(而不是整数
),浮动
(而不是双
或真正的
); - 别忘了看更详细的约定文档更多主观命名注意事项。
服务命名约定
- 服务名称必须一样的完全限定类名(FQCN)的类(例如
App \ EventSubscriber \ UserSubscriber
); - 如果有多个服务相同的类,使用FQCN主要服务和使用小写和强调名称的服务。选择把他们组用点(如分离。
something.service_name
,fos_user.something.service_name
); - 使用小写字母参数名称(除了指的环境变量
% env (VARIABLE_NAME) %
语法); - 为公共服务(如别名添加类的别名
ob娱乐下载Symfony \组件\ \类名
来something.service_name
)。
欧宝官网下载app
许可证
- ob娱乐下载Symfony是MIT许可下发布,许可块必须出席每一个PHP文件,之前的名称空间。
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。
TOC
版本
版本: