|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
HTML中的任何元素都要亲自实践,只有明白了什么元素会起到什么效果之后,你才会记忆深刻,而一味的啃书,绝对是不行的,我想大部分新手之所以觉得概念难学,大部分是一个字“懒”,懒是阻止进步的最大敌人,所以克服掉懒的习惯,才能更快的学好一样东西。编码|标准
缩进
缩进利用4个空格,而不是 tab。假如你利用 Emacs 编纂 PEAR 代码,你应当设置 indent-tabs-mode 为 nil。上面是一个 mode hook 的示例,用于设置 Emacs 合适缩进尺度(你必需确保在编纂 PHP 文件时,这些设置产生感化):
(defun php-mode-hook ()
(setq tab-width 4
c-basic-offset 4
c-hanging-comment-ender-p nil
indent-tabs-mode
(not
(and (string-match "/\\(PEAR\\|pear\\)/" (buffer-file-name))
(string-match "\.php$" (buffer-file-name))))))
这里是一律后果的 vim 划定规矩:
set expandtab
set shiftwidth=4
set softtabstop=4
set tabstop=4
--------------------------------------------------------------------------------
掌握布局
掌握布局包括 if、for、while、switch 等。这里有一个 if 语句的示例和一个 switch 语句的示例:
if 语句的示例:
<?php
if ((condition1) || (condition2)) {
action1;
} elseif ((condition3) && (condition4)) {
action2;
} else {
defaultaction;
}
?>
switch 语句的示例:
<?php
switch (condition) {
case 1:
action1;
break;
case 2:
action2;
break;
default:
defaultaction;
break;
}
?>
掌握语句应当在掌握关头词和入手下手的圆括号之间应当有一个空格,以此和函数挪用停止区分。
激烈建议你老是利用花括号将掌握布局各局部标识出来。即便是在手艺上可以不利用花括号的中央。这可以增添代码的可读性,同时防止在布局局部增添新行后引入逻辑上的毛病。
原始代码:
if (condition)
return true;
else
return false;
修正后的代码:
if (condition)
do something; // 呈现逻辑毛病
return true;
else
return false;
准确的做法:
if (condition) {
do something;
return true;
} else {
return false;
}
--------------------------------------------------------------------------------
函数挪用
挪用函数时,函数名和入手下手的括号之间不该该有空白字符。参数和入手下手及停止的括号之间不该有空格。而除第一个参数外,其他参数都应当用一个空格分隔。这里有一个示例:
<?php
$var = foo($bar, $baz, $quux);
?>
像下面的示例代码,赋值运算等号双方都应当利用一个空格。假如是相干的赋值运算,应当采取上面的模式以供应更好的可读性:
<?php
$short = foo($bar);
$long_variable = foo($baz);
?>
--------------------------------------------------------------------------------
函数界说
依照“one true brace”商定声明函数:
<?php
function fooFunction($arg1, $arg2 = '')
{
if (condition) {
statement;
}
return $val;
}
?>
“one true brace”商定就是入手下手的花括号独自占一行,而不是跟在其他语句前面。
具有默许值的参数应当位于参数列表的前面(现实上 PHP 言语界说也请求如斯)。假如合适,函数应当老是前往一个成心义的值。这里有一个略微长一点的示例:
<?php
function connect(&$dsn, $persistent = false)
{
if (is_array($dsn)) {
$dsninfo = &$dsn;
} else {
$dsninfo = DB::parseDSN($dsn);
}
if (!$dsninfo || !$dsninfo['phptype']) {
return $this->raiseError();
}
return true;
}
?>
--------------------------------------------------------------------------------
正文
类型(class)的联机文档应当合适 PHPDoc(相似于 JavaDoc)的商定。更多关于 PHPDoc 的信息可以会见 http://www.phpdoc.de/ 取得。
另外,激烈勉励利用非文档正文。普通性划定规矩是关于那些轻易健忘感化的代码添加冗长的引见性正文。
保举利用 C 款式的正文(/* */)和尺度 C++ 正文(//),而不该该利用 Perl/shell 款式的正文(#)。
--------------------------------------------------------------------------------
包括代码
不管在甚么中央无前提包括一个类型文件,应当利用 require_once()。假如有前提的包括一个类型文件(例如利用工场办法),应当利用 include_once()。利用二者中的任何一个都可以确保类型文件只包括一次。它们同享一个文件列表,因而你不需求忧虑搅浑他们 ―― 一个文件利用 require_once() 包括后不会在 include_once() 中再一次被包括。
备注:include_once() 和 require_once() 是一个声明,而不是函数。你不需求利用圆括号将文件名扩起来(不外利用括号也不会呈现毛病)。
--------------------------------------------------------------------------------
PHP 代码标志
老是利用 <?php ?> 来界定 PHP 代码,而不要利用 <? ?> 速记体例。这是为了合适 PEAR 分歧性所必需的,同时也是在分歧操作体系和分歧装置设置情况下移植 PHP 代码所请求的。
--------------------------------------------------------------------------------
头正文块
PEAR 宣布的一切源代码文件头部都应当包括上面的正文块:
<?php
/* vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4: */
// +----------------------------------------------------------------------+
// | PHP version 4 |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2002 The PHP Group |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.0 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available at through the world-wide-web at |
// | http://www.php.net/license/2_02.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Authors: Original Author <author@example.com> |
// | Your Name <you@example.com> |
// +----------------------------------------------------------------------+
//
// $ Id $
?>
这里没有硬性划定要将一个代码奉献者的名字添加到文件正文的作者列表中。普通情形下,他们的更改属于“substantial”目次(意味大约10%到20%的代码被改写)。有一个破例就是代码奉献者重写了函数或奉献了新的法式逻辑。
复杂的代码重组和 bug 修复不该该增添新作者,这是不得当的。
不在中心 PEAR 仓库中的文件应当有一个相似的正文块来讲明版权、允许协定和作者。一切文件应当包括一个形式行(modeline,用于 vim 和 emacs)以确保分歧性。
--------------------------------------------------------------------------------
利用 CVS
这个大节的内容仅仅合用于 cvs.php.net 上利用 CVS 的包。
在每个文件中包括 $Id $(两个 $ 符号之间的关头字不克不及够有空格,但因为此文档也是用 CVS 办理,因而只好加个空格,防止被 CVS 交换失落) CVS 关头字,以便检查文件以后形态和最初修正工夫等信息。假如已存在“Last Modified:”如许的信息,则交换为 $Id $ 标志。
这个大节的其他内容假定你有关于 CVS 标志和分支(branches)的根基常识。
CVS 标志用于标识你包中的文件释放之前所作的修订。上面的列表是必须利用和建议利用的 CVS 标志:
RELEASE_n_n
(必须的)用于标志一个释放版本。假如你没有利用这个标志,他人就没有举措在你宣布一个释放版本时从 CVS 办事器获得你的包。
QA_n_n
(分支,可选)假如你感觉在宣布释放版本之前要供应一个候选释放版本,那末一个好主张就是增添一个分支。这个分支可让你将释放版本隔离出来,并在正式宣布释放版本之前可觉得这些分支独自使用更新。时代,正常的开辟任务可以在骨干上持续停止。
MAINT_n_n
(分支,可选)假如你需求创立一个较小修正的释放版本(例如在 1.2 以后宣布 1.2.1)。那末你可以创立一个分支来到达目标。
唯一 RELEASE 标志是必需的,其他标志为了便利保举你利用。
上面是一个若何为 "Money_Fast" 包 1.2 释放版本增添标志的示例:
$ cd pear/Money_Fast
$ cvs tag RELEASE_1_2
T Fast.php
T README
T package.xml
经由下面的操作,就能够在 PEAR Web 网站上获得你的一系列释放版本了。
这里是一个若何创立 QA 分支的示例:
$ cvs tag QA_2_0_BP
...
$ cvs rtag -b -r QA_2_0_BP QA_2_0
$ cvs update -r QA_2_0
$ cvs tag RELEASE_2_0RC1
...and then the actual release, from the same branch:
$ cvs tag RELEASE_2_0
"QA_2_0_BP" 标志是一个 "branch point" 标志,用于标志分支的入手下手。老是用如许的标志来标明分支的入手下手是一个好主张。MAINT 分支可使用 RELEASE 标志作为它的分支出发点。
--------------------------------------------------------------------------------
示例中的 URL
一切示例顶用到的 URL 地址都应当是 "example.com"、"example.org"、"example.net"。
--------------------------------------------------------------------------------
定名商定
普通而言,class、函数和变量的名字应当老是可以描写让代码浏览者可以轻易的晓得这些代码的感化。
Classes
class 应当具有一个描写性的名字。能够时应当防止利用缩写。class 名字应当老是用一个大写字母入手下手。从 class 名字中也可以反应出 PEAR class 的条理。条理中的每一个级别都用下划线停止分隔。好的 class 名字示例以下:
Log
Net_Finger
HTML_Upload_Error
函数和办法
函数和办法应当利用 "studly caps" 款式定名。函数应当将地点包的名字作为前缀,以免与其他包的函数产生名字抵触。名字的受字母(前缀以后)应当是小写,每个新单词应当以大写字母开首。上面是一些示例:
connect()
getData()
buildSomeWidget()
XML_RPC_serializeData()
公有 class 成员和属性(意味着 class 成员和属性只应当由统一个 class 中声明的成员利用。不外 PHP 其实不撑持强迫性的公有定名空间)应当用一个下划线开首。示例:
_sort()
_initTree()
$this->_status
常数
常数应当老是全体利用大写字母定名,用下划线来分隔单词。常数名字的前缀应当利用大写的 class/包 名字。例如:DB:: 包利用的一切常数都已 DB_ 开首。
全局变量
假如你的包需求界说全局变量,那末应当用下划线跟上包的名字和另外一个下划线作为开首。例如,PEAR 包利用一个全局变量名为 $_PEAR_destructor_object_list。
预界说的值 true、false 和 null
PHP 的内建值 true、false 和 null 必需全体用小写字母书写。
实现固定数量的几张图片的上传;再如调试软件ZendStudio的使用,看了很多次老师的应用,但总感觉用的不顺手,不懂那么多的数据值,到底哪一个才是真正的问题所在;还有如数据库语句的封装,我只会用简单的函数来进行封装。 |
|