CodingStandards
参考链接:https://www.drupal.org/docs/develop/standards/coding-standards
Indenting and Whitespace 缩进和空格
使用2个空格,不是tabs。
在仓山等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站制作、成都网站建设 网站设计制作按需网站制作,公司网站建设,企业网站建设,品牌网站建设,成都全网营销,外贸网站建设,仓山网站建设费用合理。
行的结束不应该有空格。
所有的文本文件的在行的结尾以换行符\n结尾。
PHP文件开头的所有块应该使用空行分割。这包括/**@file*/块,命名空间声明和use语句以及文件中的后续代码。
So,for example,a file header might look as follows:
namespace This\Is\The\Namespace;use Drupal\foo\bar;/*** Provides example.*/class ExampleClassName {}.module文件
/*** @file* Provides example functionality*/use Drupal\foo\Bar;/*** Implements hook_help().*/function example_help($route_name){Operators 运算符
为了便于阅读,所有的二元运算符(两个值之间的运算)例如 + ,-,=,!=,==,>等应该在运算符前后有个空格。
$foo = $bar;// not$foo=$bar;一元运算符(仅操作一个值得运算符)(例如++,--)在运算符与其操作的变量或数字之间不应有空格。
检查弱类型不等式必须使用!=运算符,<> 不能使用与PHP中。
Control Structures 控制结构
控制结构包括:if, for, while, switch等。
Here is a sample if statement,since it is the most complicated of them:
if(condition1 || condition2) {action1;}elseif (condition3 && condition4) {action2;}else {defaultaction;}Note:Don't use "else if" -- awalys use elseif.
控制语句应该在控制关键字和左括号之间有个空格,以便将它们与函数调用区分开来。即使在技术上可选的情况下也要使用花括号。
For switch statements:
switch (condition) {case 1:action;break;case 2:action;break;default:defaultaction;}For d-while statements:
do {actions;} while ($condition);模板控制语句 .tpl.php
Line length and wrapping
以下规则适用于代码。 有关注释的规则,请参阅Doxygen和注释格式约定
通常,所有代码不应超过80个字符。
包含更长函数名,函数和类定义,变量声明的可以超过80个字符。
控制条件超过80个字符可以这样写:
if ($something['with']['something']['else']['in']['here'] ==mymodule_check_something($whatever['else'])) {// ...}if (isset($something['what']['ever']) && $something['what']['ever'] >$infinite && user_access('galaxy')) {// ...}if (preg_match('@(/|\\)(\.\.|~)@', $target) && strpos($target_dir,$repository) !== 0) {return FALSE;}不应该将条件包装成多行。
控制结构条件也不应该试图赢得“最少线条代码奖”中的最紧凑条件:
// DON'T DO THIS!if ((isset($key) && !empty($user->uid) && $key == $user->uid) ||(isset($user->cache) ? $user->cache : '') == ip_address() || isset($value)&& $value >= $time())) {// ...}// Key is only valid if it matches the current usr's ID, as otherwiseother// users could access any user's things.$is_valid_user = (isset($key) && !empty($user->uid) && $key == $use->uid);$is_valid_cache = (isset($user->cache) ? $user->cache == ip_address() :FALSE);$is_valid_query = $is_valid_cache || (isset($value) && $value >= time());if ($is_valid_user || $is_valid_query) {// ...}Function Calls 函数调用
函数应该在函数名称,左括号和第一个参数之间没有空格,逗号和每个参数之间有空格,最后一个参数,右括号和分号之间没有空格。
$var = foo($bar, $baz, $quux);Function Delarations 函数声明
带有默认值的参数出现在参数列表的末尾。如果合适,要返回有意义的值。
匿名函数应该在函数和它的参数之间有个空格,如下所示例:
array_map(function ($item) use (id) {return $item[$id];},$itmes)Calss Constructor Calls
当调用的函数没有类构造函数时,也要包含括号:
$foo = new MyClassName();// 这也是为了与有参数的构造函数保持一致$foo2 = new MyClassName($arg1, $arg2);请注意,如果类名是一个变量,那么首先计算变量以获取类名,然后再调用:
$bar = 'MyClassName';$foo = new $bar();$foo2 = new $bar($arg1, $arg2);Arrays
数组应该使用短阵列语法进行格式化,每个元素之间使用一个空格(逗号之后),关联数组使用=>运算符,前后使用空格:
$some_array = ['hello', 'world', 'foo' => 'bar'];注意,如果声明数组的行超过80个字符,则应该每个元素分成自己的行,并缩进一级:
$form['title'] = ['#type' => 'textfield','#title' => t('title'),'#size' => 60'#maxlength' => 128,'#description' => t('The title of your node.'),]注意,最后一个元素末尾的逗号,如果其他元素稍后放置末尾,有助于防止错误解析。
请注意,PHP5.4之前的版本不支持短矩阵语法。这意味着Drupal7和Drupal7核心的语法的项目没有明确要求使用。
Quotes 引号
Drupal没有强制使用单引号与双引号的硬性标准。在可能的情况下,保持代码的一致性,尊重其他开发人员的风格。
默认情况下使用单引号,除下面情况:
1.刻意的在线变量插值,"
$header
";2.包含单引号的字符串,如翻译等,"He's a good person.";
String Concatenations
始终在圆点(.)和连接部分使用空格提高可读性。
$string = 'Foo' . $bar;$string = bar() . 'foo';$string = 'Foo' . 'bar';在连接简单变量时,可以使用双引号并在其添加变量;否则,使用单引号。
$string = "Foo $bar";在使用连接赋值运算符(.=)时,与赋值运算符一样,在每一边使用空格。
$string .= 'Foo';$string .= $bar;$string .= baz();Including Code
在无条件的包含一个类文件的地方,使用require_once().在有条件的包含类文件的任何地方(工厂方法),请使用include_once().两个都确保只包含一次类文件。它们共享文件列表。
注意:include_once()和require_once是语句,而不是函数。您不需要使用括号包含文件名。
当包含同一目录或子目录的代码时,用 . 开始文件路径。
include_once ./includes/mymodule/mymodule_formatting.inc
在drupal7或更高的版本中使用DRUPAL_ROOT:
require_once DRUPAL_ROOT . '/' .varable_get('cache_inc','includes/cache.inc');
To include code in a module:
module_load_include('inc', 'node', 'node.admin');PHP Code Tags
总是使用来分割PHP代码,而不是简写 ?>.
从drupal4.7开始,代码文件末尾的?>被省略。这包括模块和包文件。
1.删除它可以消除文件末尾不必要的空白,可能导致“文件头已发送”错误,XHML/XML验证问题和其他问题。
2.文件末尾的结束分割符是可选的
3.PHP.net本省从文件末尾删除结束分割符
Semicolons 分号
PHP语言在大多数行末尾都需要分号,但是在代码块的末尾可以省略它们。Drupal编码标准要求有分号,即使在代码块的末尾。
-- yes-- noName Conventions 命名约定
Function and variables
函数应该使用小写字母命名,单词要使用下划线分割。此外函数名还应该使用模块名/分组名做为前缀,以免冲突。
变量应该使用小写字母命名,单词使用大写字母,例如: $lowerCamelCase 或下划线 $snake_case.但要始终如一,不要混合使用。
Persistent Variables
持久变量(使用Drupal的variable_get() / variable_set()函数定义/设置)应该使用小写字母命名,使用下划线分割。它们应该使用模块/分组名称作为前缀,以免模块之间冲突。
Constants
1.常量总是使用大写,用下划线分割。
2.模块定义的常量名称还应该以它们的模块的大写拼写最为前缀。
3.在Drupal 8或更高的版本中,常量应该使用const PHP关键字(不是define())来定义,性能更好。
注意:const不适合PHP表达式。定义一个常量或非文字值时应该使用define():
const CACHE_TEMPORARY = -1;if (!defined('MAINTENANCE_MODE')) {define('MAINTENANCE', 'error');}Global Variable
如果需要定义全局变量,则其名字应该以单个下划线开头,后面紧跟模块/主题名和另一个下划线
File Name
所有的文档文件具有文件扩展名.txt,以便于在Windows系统上查看,此外这些文件的文件名应该大写(README.txt而不是readme.txt)示例:README.txt,INSRALL.txt,TODO.txt等。
Helper Modules
有几个贡献的模块可以协助审查代码标准的遵从性:
1. Coder
2. Dreditor
3. PAReview
4.Coder Sniffer
分享题目:CodingStandards
文章分享:http://pwwzsj.com/article/ihjhjj.html