编码标准

编辑本页

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

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

编码标准

在向Symfony贡献代码时,必须遵循其编码标准。欧宝娱乐app下载地址长话短说,以下是黄金法则:模仿现有的Symfony代码欧宝娱乐app下载地址.Symfony使用的大多数开源bundle和库也遵循相同的准则,您也应该遵循。欧宝娱乐app下载地址

请记住,标准的主要优势是每段代码看起来都很熟悉,这不是为了这个或那个更可读。

欧宝娱乐app下载地址中定义的标准PSR-0PSR-1PSR-2而且PSR-4文档。

由于一张图片或一些代码胜过千言万语,下面是一个包含以下大部分功能的简短示例:

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
<?php/* *该文件是Symfony包的一部分。欧宝娱乐app下载地址* * (c) Fabien Potencier < Fabien@欧宝娱乐app下载地址symfony* *有关完整的版权和许可信息,请查看与此源代码一起分发的license *文件。* /名称空间Acme/** *编码标准演示。* /FooBar常量SOME_CONST =42/ * * *@var字符串* /私人fooBar/ * * *@param一些参数描述*/公共函数__construct->fooBar =->transformText ();}/ * * *@return字符串* *@deprecated* /公共函数someDeprecatedMethod(){@trigger_error (sprintf (%s()方法自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选项作为选项) {如果(!in_array (选项defaultOptions)) {\ RuntimeException (sprintf (“无法识别的选项“%s””选项));}}mergedOptions= array_merge (defaultOptions选项);如果真正的= = =) {返回;}如果“字符串”= = =) {如果“值”= = =mergedOptions“some_default”) {返回substr (05);}返回函数);}}/** *对给定值执行一些基本检查。* *@param要检查*的某个值@param控制方法流的开关@return如果$ switch不为false,则返回*/私人函数reverseBoolean价值=零,theSwitch= false)如果(!theSwitch) {返回;}返回价值;}}

结构

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

命名约定

  • 变量、函数和方法名、参数使用驼峰形,而不是下划线;
  • 选项名和参数名使用下划线;
  • 对所有类使用名称空间;
  • 抽象类的前缀摘要.请注意,一些早期的Symfony类没有遵循这个欧宝娱乐app下载地址约定,并且由于向后兼容的原因没有重命名。然而,所有新的抽象类都必须遵循这个命名约定;
  • 后缀接口接口
  • 后缀特征为特征
  • 后缀异常异常
  • 文件名使用字母数字字符和下划线;
  • PHPDocs中的类型提示和类型转换,请使用保龄球(而不是布尔布尔),int(而不是整数),浮动(而不是真正的);
  • 别忘了看更详细的约定文档以获得更主观的命名考虑。

服务命名约定

  • 服务名称包含以点分隔的组;
  • bundle的DI别名是第一组(例如。fos_user);
  • 服务名和参数名使用小写字母;
  • 组名使用下划线符号。

欧宝体育电话

  • 为所有类、方法和函数添加PHPDoc块;
  • 将注释分组在一起,以便相同类型的注释立即相互跟随,不同类型的注释由单个空行分隔;
  • 省略了@return如果方法不返回任何东西,则标记;
  • @package而且@subpackage不使用注释。

许可证

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