编码标准

编辑本页

警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 5.2,现已不再维护。

本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。

编码标准

欧宝娱乐app下载地址Symfony代码由世界各地数以千计的开发人员贡献。为了使每段代码看起来都熟悉,Symfony定义了一些所有代码都必须遵循的编码标准。欧宝娱乐app下载地址

这些Symf欧宝娱乐app下载地址ony编码标准是基于PSR-1PSR-2PSR-4而且PSR-12标准,所以你可能已经知道其中的大部分。

让你的代码遵循编码标准

Symfony不是手动检查代码,而是简单地确保您提供的代码与预期的代码语法匹配。欧宝娱乐app下载地址首先,安装PHP CS修复工具然后,运行这个命令来修复任何问题:

1 2
cd你的项目/php php-cs-fixer。Phar fix -v

如果您忘记运行这个命令,并提出一个有语法问题的拉请求,我们的自动化工具将警告您,并将提供解决方案。

欧宝娱乐app下载地址Symfony编码标准的细节

如果您想详细了解Symfony编码标准,这里有一个简短的示例,欧宝娱乐app下载地址包含下面描述的大多数特性:

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包的一部分。欧宝娱乐app下载地址* * (c) Fabien Potencier < Fabien@欧宝娱乐app下载地址symfony* *有关完整的版权和许可信息,请查看与此源代码一起分发的license *文件。* /名称空间Acme使用其他Qux/** *编码标准演示。* /FooBar常量SOME_CONST =42/ * * *@var字符串* /私人fooBar私人qux/ * * *@param一些参数描述*/公共函数__construct, Quxqux->fooBar =->transformText ();->qux为qux;}/ * * *@return字符串* *@deprecated* /公共函数someDeprecatedMethod(){trigger_deprecation (“欧宝娱乐app下载地址symfony /包名称”“5.1”%s()方法已弃用,请改用Acme\Baz::someMethod()方法。__METHOD__);返回巴兹::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 (05);}返回函数);}返回;}/** *为给定值执行一些基本操作。* *@param要操作*的某个值@param控制方法流的开关私人函数performoperation中价值=零,theSwitch= false)如果(!theSwitch) {返回;}->qux->doFoo (价值);->qux->doBar (价值);}}

结构

  • 在每个逗号分隔符后添加一个空格;
  • 在二进制运算符周围添加一个空格(= =& &,…),但连接()操作符;
  • 放置一元运算符(--,…)与受影响变量相邻;
  • 总是使用相同的比较除非你需要打字杂耍;
  • 使用尤达条件根据表达式检查变量以避免在条件语句中发生意外赋值(这适用于= =! ====,= = !);
  • 在多行数组中的每个数组项后添加逗号,即使是在最后一个数组项之后;
  • 在前面添加一个空行返回语句,除非返回值单独存在于语句组中(如如果声明);
  • 使用返回null;当函数显式返回时价值观和使用返回;当函数返回时无效值;
  • 使用大括号表示控件结构体,而不管它包含多少条语句;
  • 每个文件定义一个类——这不适用于私有助手类,这些类不打算从外部实例化,因此不受PSR-0而且PSR-4自动装载标准;
  • 在类名的同一行声明类继承和所有实现的接口;
  • 在方法之前声明类属性;
  • 首先声明公共方法,然后是保护方法,最后是私有方法。此规则的例外是类构造函数和设置()而且tearDown ()PHPUnit测试的方法,必须始终是增加可读性的第一个方法;
  • 将所有参数声明在与方法/函数名相同的一行上,不管有多少个参数;
  • 在实例化类时使用括号,而不管构造函数有多少个参数;
  • 异常和错误消息字符串必须使用连接sprintf
  • 不要使用其他的elseif打破如果而且情况下返回或抛出某物的条件;
  • 不要在周围使用空格偏移访问器和之前抵消访问器;
  • 添加一个使用语句,用于不属于全局命名空间的每个类;
  • 当PHPDoc标记像@param@return包括而其他类型,总是放置在类型列表的末尾。

命名约定

  • 使用camelCase对于PHP变量,函数和方法名,参数(例如:acceptableContentTypes美元hasSession ());
  • 使用snake_case配置参数和Twig模板变量(例如:framework.csrf_protectionhttp_status_code);
  • 为所有PHP类使用名称空间UpperCamelCase他们的名字(例如:ConsoleLogger);
  • 为所有抽象类加上前缀摘要除了PHPUnit)* TestCase.请注意,一些早期的Symfony类没有遵循这个欧宝娱乐app下载地址约定,并且由于向后兼容的原因没有重命名。然而,所有新的抽象类都必须遵循这个命名约定;
  • 后缀接口接口
  • 后缀特征为特征
  • 后缀异常异常
  • 使用UpperCamelCase命名PHP文件(例如:EnvVarProcessor.php)和蛇的情况下命名Twig模板和web资产(section_layout.html.twigindex.scss);
  • PHPDocs中的类型提示和类型转换,请使用保龄球(而不是布尔布尔),int(而不是整数),浮动(而不是真正的);
  • 别忘了看更详细的约定文档以获得更主观的命名考虑。

服务命名约定

  • 服务名必须与其类的全限定类名(FQCN)相同。App \ EventSubscriber \ UserSubscriber);
  • 如果同一个类有多个服务,则对主服务使用FQCN,其余服务使用小写和下划线名称。可选地将它们分成用点分隔的组(例如:something.service_namefos_user.something.service_name);
  • 参数名使用小写字母(使用% env (VARIABLE_NAME) %语法);
  • 为公共服务添加类别名(例如别名欧宝娱乐app下载地址Symfony \组件\ \类名something.service_name).

欧宝体育电话

  • 为所有类、方法和函数添加PHPDoc块(尽管你可能会被要求删除没有增加价值的PHPDoc);
  • 将注释分组在一起,以便相同类型的注释立即相互跟随,不同类型的注释由单个空行分隔;
  • 省略了@return如果方法不返回任何东西,则标记;
  • @package而且@subpackage不使用注释;
  • 不要内联PHPDoc块,即使它们只包含一个标签/** {@inheritdoc} */在一行中);
  • 在添加新类或对现有类进行重大更改时,可以使用@author可以添加或扩展带有个人联系信息的标签。请注意,个人联系信息可能会根据要求更新或删除核心团队

许可证

  • 欧宝娱乐app下载地址Symfony是在MIT许可证下发布的,许可证块必须出现在每个PHP文件的顶部,在名称空间之前。
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。