编码标准
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 3.4,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
编码标准
ob娱乐下载Symfony代码由世界各地数以千计的开发人员贡献。为了使每段代码看起来都熟悉,Symfony定义了一些所有代码都必须遵循的编码标准。ob娱乐下载
这些Symfob娱乐下载ony编码标准是基于PSR-1,PSR-2而且PSR-4标准,所以你可能已经知道其中的大部分。
让你的代码遵循编码标准
Symfony不是手动检查代码,而是简单地确保您提供的代码与预期的代码语法匹配。ob娱乐下载首先,安装PHP CS修复工具然后,运行这个命令来修复任何问题:
1 2
$cd你的项目/$php php-cs-fixer。Phar fix -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 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
/* *该文件是Symfony包的一部分。ob娱乐下载* * (c) Fabien Potencier < Fabien@ob娱乐下载symfony* *有关完整的版权和许可信息,请查看与此源代码一起分发的license *文件。* /名称空间Acme;使用其他\Qux;/** *编码标准演示。* /类FooBar{常量SOME_CONST =42;/ * * *@var字符串* /私人$fooBar;私人$qux;/ * * *@param一些参数描述*/公共函数__construct($假, Qux$qux){$这->fooBar =$这->transformText ($假);$这->qux为$qux;}/ * * *@return字符串* *@deprecated* /公共函数someDeprecatedMethod(){@trigger_error (sprintf (' %s()方法自vendor-name/package-name 2.8起已弃用,并将在3.0中移除。请使用Acme\Baz::someMethod()。,__METHOD__), E_USER_DEPRECATED);返回巴兹::someMethod ();}/** *转换作为第一个参数的输入。* *@parambool|string $dummy@param转换* *中使用的选项集合@return转换后的输入* *@throws当提供了一个无效的选项时\RuntimeException */私人函数transformText($假数组,$选项= []){$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);}返回函数$假);}返回零;}/** *为给定值执行一些基本操作。* *@param要操作*的某个值@param控制方法流的开关私人函数performoperation中($价值=零,$theSwitch= false){如果(!$theSwitch){返回;}$这->qux->doFoo ($价值);$这->qux->doBar ($价值);}}
结构
- 在每个逗号分隔符后添加一个空格;
- 在二进制运算符周围添加一个空格(
= =
,& &
,…),但连接(.
)操作符; - 放置一元运算符(
!
,--
,…)与受影响变量相邻; - 总是使用相同的比较除非你需要打字杂耍;
- 使用尤达条件根据表达式检查变量以避免在条件语句中发生意外赋值(这适用于
= =
,! =
,= = =
,= = !
); - 在多行数组中的每个数组项后添加逗号,即使是在最后一个数组项之后;
- 在前面添加一个空行
返回
语句,除非返回值单独存在于语句组中(如如果
声明); - 使用
返回null;
当函数显式返回时零
价值观和使用返回;
当函数返回时无效
值; - 使用大括号表示控件结构体,而不管它包含多少条语句;
- 每个文件定义一个类——这不适用于私有助手类,这些类不打算从外部实例化,因此不受PSR-0而且PSR-4自动装载标准;
- 在类名的同一行声明类继承和所有实现的接口;
- 在方法之前声明类属性;
- 首先声明公共方法,然后是保护方法,最后是私有方法。此规则的例外是类构造函数和
设置()
而且tearDown ()
PHPUnit测试的方法,必须始终是增加可读性的第一个方法; - 将所有参数声明在与方法/函数名相同的一行上,不管有多少个参数;
- 在实例化类时使用括号,而不管构造函数有多少个参数;
- 异常和错误消息字符串必须使用连接sprintf;
- 调用trigger_error型
E_USER_DEPRECATED
必须切换到选择通过@
操作符。欲知详情,请浏览约定; - 不要使用
其他的
,elseif
,打破
后如果
而且情况下
返回或抛出某物的条件; - 不要在周围使用空格
[
偏移访问器和之前]
抵消访问器; - 添加一个
使用
语句,用于不属于全局命名空间的每个类; - 当PHPDoc标记像
@param
或@return
包括零
而其他类型,总是放置零
在类型列表的末尾。
命名约定
- 使用camelCase对于PHP变量,函数和方法名,参数(例如:
acceptableContentTypes美元
,hasSession ()
); - 使用snake_case配置参数和Twig模板变量(例如:
framework.csrf_protection
,http_status_code
); - 为所有PHP类使用名称空间UpperCamelCase他们的名字(例如:
ConsoleLogger
); - 为所有抽象类加上前缀
摘要
除了PHPUnit)* TestCase
.请注意,一些早期的Symfony类没有遵循这个ob娱乐下载约定,并且由于向后兼容的原因没有重命名。然而,所有新的抽象类都必须遵循这个命名约定; - 后缀接口
接口
; - 后缀特征为
特征
; - 后缀异常
异常
; - 使用UpperCamelCase命名PHP文件(例如:
EnvVarProcessor.php
)和蛇的情况下命名Twig模板和web资产(section_layout.html.twig
,index.scss
); - PHPDocs中的类型提示和类型转换,请使用
保龄球
(而不是布尔
或布尔
),int
(而不是整数
),浮动
(而不是双
或真正的
); - 别忘了看更详细的约定文档以获得更主观的命名考虑。
服务命名约定
- 服务名必须与其类的全限定类名(FQCN)相同。
App \ EventSubscriber \ UserSubscriber
); - 如果同一个类有多个服务,则对主服务使用FQCN,其余服务使用小写和下划线名称。可选地将它们分成用点分隔的组(例如:
something.service_name
,fos_user.something.service_name
); - 参数名使用小写字母(使用
% env (VARIABLE_NAME) %
语法); - 为公共服务添加类别名(例如别名
ob娱乐下载Symfony \组件\ \类名
来something.service_name
).
欧宝官网下载app
- 为所有类、方法和函数添加PHPDoc块(尽管你可能会被要求删除没有增加价值的PHPDoc);
- 将注释分组在一起,以便相同类型的注释立即相互跟随,不同类型的注释由单个空行分隔;
- 省略了
@return
如果方法不返回任何东西,则标记; - 的
@package
而且@subpackage
不使用注释; - 不要内联PHPDoc块,即使它们只包含一个标签
/** {@inheritdoc} */
在一行中); - 在添加新类或对现有类进行重大更改时,可以使用
@author
可以添加或扩展带有个人联系信息的标签。请注意,个人联系信息可能会根据要求更新或删除核心团队.
许可证
- ob娱乐下载Symfony是在MIT许可证下发布的,许可证块必须出现在每个PHP文件的顶部,在名称空间之前。
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。