- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章PHP编码规范的深入探讨由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
缩进与空白字符(Indenting and Whitespace) 使用 2 个空格而不使用 tab 键进行代码缩进(notepad++, Eclipse 等编辑器均支持此项配置); 行尾不应该有空白字符 应使用 \n (Unix换行符),而不是 \r\n (Windows 换行符) 所有文件均应以一个空行结尾 。
运算符(Operators) 所有二元运算符(二个值之间的运算符),如 +, -, =, !=, ==, > 等等,在运算符两端均需留有一个空格,如应该使用 $foo = $bar 而不是 $foo=$bar。 所有一元运算符(只操作一个值班的运算符),例如 ++,在值与运算符之间则不应加入空格 。
转型(Casting) 在 (type) 与要转型的变量之间应加入一个空格,如 (int) $mynumber. 控制结构(Control Structures) 控制结构包含 if, for, while, switch 等等,下面是一个简单的 if 语句结构示例:
(Note: 不要使用 "else if" -- 总是使用 elseif.) 控制语句的关键词与左边括号之间应该有一个空格,以此来与函数调用进行区分。 即使在大括号是可选的情况下,也应当总是使用大括号。这样可以加强代码的可读性以及减少因嵌套带来的逻辑错误。 switch 语句结构示例:
行长度与封装(Line length and wrapping) 通常情况下,每行代码的长度不应超过80个字符 以下情况,行长度可超过80个字符:当行内包含过长的函数名称、函数/类定义、变量声明等 为方便阅读和理解,控制结构的行长度可超过80个字符 。
控制条件(condition)不应该写作多行 控制条件应该适当拆分以便于阅读和理解,编写代码时要避免以下情形:
将控制条件进行拆分,不仅便于阅读,同时也方便添加注释让人知道为何进行这样的条件判断 。
函数调用(Function Calls) 调用函数时,函数名与左括号之间没有空格,除最后一个参数外,每个参数后的 , 都应跟上一个空格,如: $var = foo($bar, $baz, $quux); 如之前所说,等号两边应该各有一个空格。当有一系列相关语句时,出于可读性的考虑,可以适当增加空格的数量,如: $short = foo($bar); $long_variable = foo($baz),
。
函数声明(Function Declarations) 包含默认值的参数应当放在最后,当函数拥有返回值时,尽量返回便于理解的值:
类构造器调用(Class Constructor Calls) 当调用不带参数的类构造器时,始终包含括号 $foo = new MyClassName(),
。
带参数的类构造器 $foo = new MyClassName($arg1, $arg2); 如果使用变量做为类名,需先为变量赋值,然后才调用类构造器:
数组(Array) 数组的值之间应使用空格分隔,赋值操作符号(=>)左右也应包含空格: $some_array = array('hello', 'world', 'foo' => 'bar'); 当声明数组的字符长度超过80个字符(通常在构造表单和菜单时),应该将各元素分行、缩进编写:
注意:最后一个数组元素末尾有一个逗号,这并不是手误,而是避免有新元素加入到最后之后因缺少逗号而出现解析错误。(从某种程度上来讲,在最后一个数组元素末尾加上逗号是一种推荐的做法,甚至在向drupal.org提交代码时,一些代码规范检测脚本会因为最后一个元素没有添加逗号而出现警告提示。) 引号(Quotes) Drupal 对于单引号和双引号的使用并没有很强硬的标准,只需在同一模块内保持用法的统一即可。 使用单引号的效率要高于双引号,因为解析器不需要到引号之间查找变量。以下是使用双引号的两种情况: 引号中间带有变量,如"<h2>$header</h2>" 引号中间带有单引号,使用双引号可避免对单引号的转义 "He's a good person." 当然也可以使用单引号,但 .pot 解析器不能很好的处理这种情况,而且看起来怪怪的'He\'s a good person.' 。
。
字符串连接(String Concatenations) 在点与要连接字符串之间需要加入空格以加强代码可读性: 如果只是简单地连接变量,可以使用双引号 使用连接赋值符(.=)时,需要在符号两侧预留空格 注释(Comment) 注释规范单独在 Doxygen及注释格式规范页面 讨论 引入代码(Including Code) 任何无条件引用文件的情况下,使用 require_once(), 任何有条件引用文件的情况,则使用 include_once(). 这两条语句都会保证文件只被引入一次。 当从当前目录或子目录引入代码时,始终以点路径开头 include_once ./includes/mymodule_formatting.inc 在 Drupal 7 及更新版本中,使用 DRUPAL_ROOT 常量: require_once DRUPAL_ROOT . '/' . variable_get('cache_inc', 'includes/cache.inc'); PHP 代码标签(PHP Code Tags) 始终使用<?php ?>来界定PHP代码而不使用要<? ?>。这是为了遵循Drupal规范,同时也便于代码在其它系统和平台中被引用。 自 Drupal 4.7 开始,最后的 ?> 都故意被忽略不写,原因如下: 移除它可以避免在文件末尾出现空白字符,这些空白字符可能导致“文件头已发送(header already sent)”错误,XHTML/XML验证错误,及其它问题 PHP 官方说明 结尾的PHP界定符是可选项 PHP.net 自身也移除了文件末尾的界定符(如 prepend.inc ) 。
分号(Semicolons) PHP 语言要求除了代码块以外,大多数行尾都要跟上分号。Drupal 代码规范同样有此要求,并且对于代码块也是如此。以下是一个单行代码块的示例: -- YES -- NO 示例 URL(Example URL) 使用 example.com 表示所有示例 URLs 命名规范(Naming Conventions) 函数与变量(Functions and Variables) 函数与变量名称应该使用小写字母,且单词之间使用下划线分隔。函数应该使用模块组/模块名称作为前缀,以避免与不同模块间的冲突。 持久变量(Persistent Variables) 持久变量是指通过 variable_get()/variable_set() 函数取得和设置的变量,变量名称应该使用小写字母,且单词之间使用下划线进行分隔。持久变量也应该使用模块组/模块名称作为前缀,以避免与不同模块间的冲突.
常量(Constants) 常量始终要求使用全大写字母,且单词之间使用下划线进行分隔。(包括PHP内置常量 TRUE, FALSE, NULL) 模块中定义的常量需始终使用大写的模块名称作为前缀。 在 Drupal 8 及之后,应使用 const 关键词代替 define() 函数来定义常量,因为效率更高 注意 const 不能用于PHP表达式,因此在条件判断和非字面值(non-literal value ???)时,还是应当使用 define() 函数 全局变量(Global Variables) 定义全局变量时,应当使用下划线加模块/主题名称开头 类(Class) 类名应使用驼峰式命名(即单词首字母大写) 类中的方法(函数)和属性(成员变量)应使用首字母小写的驼峰式 定义访问权限时,使用 protected 而代替 private,从而其它的类可以在必要时扩展和更新方法。Protected 和 public 函数和变量不应以下划线开头。 更多关于 面向对象的编码规范 文件名(Filename) 所有文档文件都应加上 .txt 后缀,以便于 Windows 用户查看。同时,所有文件名称应该全部大写,而文件后缀应该全部小写。 如 README.txt, INSTALL.txt, TODO.txt, CHANGELOG.txt 等等.
辅助模块及工具 Coder 模块:可以遵循部分以上代码规范,对代码进行审查及修改建议 Drupal Code Sniffer :代码规范检测工具 PAReview.sh :还处理沙盒中的代码规范检测脚本,几乎严格遵守以上所有代码规范并给出修改建议.
最后此篇关于PHP编码规范的深入探讨的文章就讲到这里了,如果你想了解更多关于PHP编码规范的深入探讨的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我们有一个 Java 项目,每天晚上使用 TeamCity 对 Java 类进行静态分析,以查找代码中容易出现的错误。我们想告诉 TeamCity 寻找开发人员可能引入的与 == 与 .equals
前言 🍊缘由 Git分支管理好,走到哪里都是宝 🏀事情起因: 最近翻看博客中小伙伴评论时,发现文章【规范】看看人家Git提交描述,那叫一个规矩一条回复: 本狗亲测在我司中使用规范
使用带有不存在的命名空间的命名空间限定关键字来定义规范是否被认为是不好的做法?我想在公共(public) domain 命名空间中定义实体映射...所以为了避免在合并规范时丢失数据,我使用约定 :en
有没有办法在调用 clojure.spec.test.alpha/check 时覆盖核心谓词函数的生成器? 可以通过 s/gen 中的路径覆盖谓词生成器: (gen/generate (s/gen
以内核 rpm 为例,它允许在一个系统上同时安装多个版本。规范文件中究竟是什么允许的? 我想打包一个已经存在的具有不同安装前缀的多个版本的项目。 最佳答案 百胜 找到了让 yum 安装而不是更新的方法
我正在尝试用 C# 编写 PDF 解析器,但我遇到了一个问题,我不确定如何解释规范。 除非另有说明,否则 PDF 文档中的用户空间为 1/72 英寸(即 1pt)。 Tf 运算符提供的比例将字体从标准
我正在编写一些代码,需要能够获取两个 pdf 并将它们附加到页面级别(例如,如果它们都是 2 页文档,则有一个 4 页文档,其中所有 4 页都与原始文档相同). 在不使用库的情况下,最好的方法是什么?
是否有序言语言语法,或接近它的通常用作引用的东西?我正在使用 SWI-prolog,所以有一个适合这种风格的会很好,否则一般的 prolog 语言语法/规范也能工作。 最佳答案 自 1995 年起,P
我需要一个函数来过滤参数和构建查询。我有 4 个参数,因此如果我尝试为每个条件实现查询,我将不得不写 16 (2^4)实现 - 这不是一个好主意。 我尝试使用界面改进我的代码 Specificatio
这个 ExtGState 对象对图像做了什么: > 我有 PDF 规范,但一点也不清楚。显然,这将身份函数(什么的身份?单位矩阵?)从 [0.0 1.0] 映射到 [0.0 1.0](相同),这是没有
只是想获得有关 ePub 规范的一些帮助。toc.ncx 是否必须具有 src(即 xhtml)。我观察到 .opf 文件中也提供了相同的内容 src。 最佳答案 是的,这是强制性的,这是一个设计问题
让我们看看莱宁根项目 map 的真实示例 :global-vars : ;; Sets the values of global vars within Clojure. This example
我正在开发一个 LOB 框架,它具有 SL 和 MVC 前端、WCF 后端以及在服务器上运行的几个服务模块。我一直在查看 Spec#,看它是否对我有任何帮助。不可空类型和检查异常本身非常好,但我还没有
Promises/A+规范是最小的规范之一。因此,实现它是理解它的最佳方法。福布斯·林德赛(Forbes Lindesay)的以下回答将引导我们完成实现Promises / A +规范Basic Ja
哪个文档指定了 MySQL definer 格式? 具体来说,definer admin@% 中的 % 是什么意思(以及为什么使用这个符号)? 最佳答案 这里MySQL使用的格式定义在the MySQ
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
在 css 规范中,什么会影响更多的 inline 样式或外部 !important 外部“style.css”: #di{color: green!important;} div 文本颜色是红色还
我正在努力思考 CSS 的一些细节,我从 W3 CSS Visual Formatting Spec 9.2.2 中找到了这部分摘录。特别迟钝: Inline-level boxes that are
这个问题在这里已经有了答案: Are (non-void) self-closing tags valid in HTML5? (8 个答案) 关闭 9 年前。 在 HTML5 中你应该使用 或
以下样式在规范方面有何不同? ul .active { background: #E7F3EF;} ul li.active { background: #E7F3EF;} Item 1
我是一名优秀的程序员,十分优秀!