站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
▼
建站程序
开发
服务器
办公软件
开发教程
▼
服务器教程
软件使用教程
运营教程
热门电子书
▼
CSS教程
WordPress教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
热点词条
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
Xoops模块开发 编码标准
”(章节)
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
===编码风格=== '''PHP 代码标记符''' 在XOOPS中必须使用完整的PHP标记符, 标准的PHP标记符为: <pre> <?php ?> </pre> 不允许使用简写标记符. '''字符串''' 纯文字字符串 可以使用双引号和单引来标记字符串.对于纯文字字符串(不包含变量替代),必须使用单引号包含: <pre> $a = 'Example String'; </pre> 字符串中的特殊字符 当字符中包含撇符号(`)和单引号时,可以使用双引号. 这种方式多用于SQL语句的书写: <pre> $sql = "SELECT `id`, `name` from `people` WHERE `name`='Fred' OR `name`='Susan'"; </pre> 这样的语法更加清晰. 含有变量替代的字符串 变量的替换推荐用大括号标记. 推荐: <pre> $greeting = "Hello {$name}, welcome back!"; </pre> 不推荐: <pre> $greeting = "Hello $name, welcome back!"; </pre> 为了保持一致性,下列方式也是不推荐的: <pre> $greeting = "Hello ${name}, welcome back!"; </pre> 字符串连接 多个字符串的可以使用 "." 符号连接.使用 "."符号时必须在其前后加入一个空格,这样可以增强可读性如: <pre> $project = 'Xoops' . ' ' . 'Project'; </pre> 当使用 "." 操作符连接多个字符串时,可以把语句拆分成多行来增强可读性,对于这种情况,每个后续行应该使用空格填充,使 "." 操作符刚好对齐在"="下面: <pre> $sql = "SELECT `id`, `name` FROM `people` " . "WHERE `name` = 'Susan' " . "ORDER BY `name` ASC "; </pre> '''数组''' 数字索引数组 数组的索引不允许使用负数。 索引数组可以使用任何非负整数开始,但并不提倡这么做,建议每个数组都应该使用索引0开始。 当使用array关键字定义索引数组时,每个逗号后面都应该跟随一个空格字符,目的是增强可读性: <pre> $sampleArray = array(1, 2, 3, 'XOOPS', 'Project'); </pre> 使用array关键字定义索引数组的语句可以拆成多行,这种情况下每个后续行都应该使用空格填充头部,使每行以如下的形式保持对齐: <pre> $sampleArray = array(1, 2, 3, 'XOOPS', 'Project', $a, $b, $c, 56.44, $d, 500); </pre> 关联数组 当使用array关键字定义关联数组时,建议把语句拆分成多行,对于这种情况,应该使用空格使每一行的键和值分别对齐: <pre> $sampleArray = array('firstKey' => 'firstValue', 'secondKey' => 'secondValue'); </pre> '''类''' 类的声明 类的声明应该遵守以下要求: * 大括号必须写在类名字的下一行. * 每个类都必须有一个遵守PHPDocumentor标准的注释文档块. * 类内部的代码都必须缩进4个空格. * 一个PHP文件只允许有一个类. * 在一个类文件里可以放置其他代码,但不提倡,对于这种情况,必须使用2个空行,把类代码和其他PHP代码分开. 下面是一个规范的类的声明: <pre> /** * 类说明的注释块 */ class XoopsClass { // 类的内部代码 // 必须缩进4个空格 } </pre> 类成员变量 成员变量的命名必须遵守变量命名规则. 类成员变量的声明必须位于类的顶部,在函数定义之前. 不允许使用var[[关键字]],成员变量的声明必须使用关键字:private、protected或者public。尽管可以通过把变量声明为public,以便直接访问成员变量,但本规范推荐使用get/set存取符来访问变量. '''函数与方法''' 函数与方法的定义 函数命名必须遵循命名规范. 类内部的函数必须使用private、protected和public等关键字,表示该函数的可见性. 声明静态变量的时候,众多PHP社区习惯写在类的最前面: <pre> public static foo() { ... } private static bar() { ... } protected static goo() { ... } </pre> 函数里大括号的用法与类一致,即大括号必须位于函数名字的下一行,函数名字与括号之间没有空格. 下面是规范的类成员函数的书写方法: <pre> /** * 类说明文档的注释块 */ class XoopsFoo { /** * 方法说明文档的注释块 */ public function sampleMethod($a) { // 函数的内部内容 // 必须缩进4个空格 } /** *方法说明文档的注释块 */ protected function _anotherMethod() { // ... } } </pre> 返回值(return)不允许使用括号. This can hinder readability and can also break code if a function or method is later changed to return by reference. <pre> function foo() { // 错误的写法 return($this->bar); // 正确的写法 return $this->bar; } The use of type hinting is encouraged where possible with respect to the component design. For example, class XoopsComponent { public function foo(SomeInterface $object) {} public function bar(array $options) {} } </pre> 函数和方法的用法 禁止使用全局函数. 如果函数有多个参数,需要在每个逗号后面添加一个空格,如下例所示: threeArguments(1, 2, 3); 调用阶段不允许传递引用传递参数,而应该把他放在函数定义阶段. 对于允许使用数组参数的函数,函数调用允许使用array声明语句,并且允许分割成多行,同时需要通过缩进保持可读性,例如下面的例子: <pre> threeArguments(array(1, 2, 3), 2, 3); threeArguments(array(1, 2, 3, 'XOOPS', 'Project', $a, $b, $c, 56.44, $d, 500), 2, 3); </pre> '''控制语句''' If / Else / Elseif 控制语句中if和elseif关键字之后,必须一个空格与后面的左括号分割,右括号后面也必须有一个空格. 在括号里面的条件语句,操作符两边必须有空格以保持可读性,如果括号里的条件较多,建议根据逻辑分组通过添加括号. 左大括号应该写在条件语句的同一行,而右大括号应该独自放在一行,括号内部的内容应该缩进4个字符. <pre> if ($a != 2) { $a = 2; } </pre> 对于包含有elseif或else的if语句,其格式要求参照如下例子: <pre> if ($a != 2) { $a = 2; } else { $a = 7; } if ($a != 2) { $a = 2; } elseif ($a == 3) { $a = 4; } else { $a = 7; } </pre> 尽管PHP允许在某些情况下这些语句里可以不使用大括号,但我们的编码规范里不允许这么做,所有的if、elseif和else语句都必须使用大括号. Switch switch内部的内容不用缩进,每个case语句下的内容也同样缩进4个空格. <pre> switch ($numPeople) { case 1: break; case 2: break; default: break; } </pre> switch语句中都必须有一个default语句,不能省略. '''内部文档化''' 文档格式 所有的文档块(即doc blocks)都必须遵循php Documentor格式 所有为XOOPS平台写的或者应用在XOOPS平台的源代码文件,都必须在每个文件顶部包含文件级的文档块,以及在每个类定义的上边包含类级的文档块. 不能用'#'作为注释的标记符. 文件中的文档块 任何包含PHP代码的文件都必须在其顶部包含文档块,并至少包含以下php Documentor标记: <pre> /** * 关于本文件的简要说明 * * 关于本文件的详细描述(如果有的话)... * * 许可信息 * * You may not change or alter any portion of this comment or credits * of supporting developers from this source code or any supporting source code * which is considered copyrighted (c) material of the original comment or credit authors. * * @copyright The XOOPS Project http://sourceforge.net/projects/xoops/ * @license http://www.fsf.org/copyleft/gpl.html GNU public license * @author 作者名称 <author email, or website> * @version $Id$ * @since File available since Release 3.0.0 */ </pre> 类中的文档块 每个类级别的文档块都必须至少包含以下php Documentor标记: <pre> /** * 类的简单说明 * * 类的详细说明 (如果有的话)... * * @copyright The XOOPS Project http://sourceforge.net/projects/xoops/ * @license http://www.fsf.org/copyleft/gpl.html GNU public license * @author Author Name <author email, or website> * @version $Id$ * @since File available since Release 3.0.0 */ </pre> 函数中的文档块 每个函数,包括对象方法,都必须包含至少下列文档块: * 函数功能描述 * 所有的参数 * 所有可能返回的值 <pre> /** * 关于函数的说明 * * @param Place $where Where something interesting takes place * @param integer $repeat How many times something interesting should happen * @return Status */ public function xoops_doSomethingInteresting(Place $where, $repeat = 1) { // implementation... } </pre> [[category:Xoops模块开发指南]]
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)