设为首页 收藏本站
查看: 668|回复: 0

[经验分享] PHP代码规范[转]

[复制链接]

尚未签到

发表于 2015-8-26 10:44:20 | 显示全部楼层 |阅读模式
PHP代码规范
                            Author: andylin & 流浪牛

第一部分:空格和tab
1.将编辑器的Tab大小和Indent Size为8个字节.
2.使用 if,for,switch,while等语句,括号如下所示,(而关键字之后最好加一个空格)。如下所示:        

       if (bSet == NULL)
       {
              ...
       }


3.关键字之后最好加一个空格。运算符之后也最好加上一个空格。包括:&& 、||、 & 、| 、== 、 !=、 for 、if、while、+、-、*、/。例如:

int i = 0;
for (i = 0; i < N; i++)
{
       ....
}


第二部分:命名规则
4.变量命名规则:
    1):普通类型变量根据类型的在前面加上小写前缀,例如
        数组类型最好加上 arr*前缀。
        

$n*       = 0; (以tab键对齐)
        $ch*      = 0;
        $str*      = &#8220;&#8221;;


2):类的成员(包括结构体)变量加上m_的前缀。
3):类的命名用C开头代表示一个class。比如:CPointView。
4):文件的命名视其用途而命名。类的命名为类名去掉C + .php。函数文件最好将功能相近的函数集放在一起,以功能命名。
5):原则上所有的命名都是以&#8220;26个字母&#8221;+&#8220;_&#8221;+&#8220;数字&#8221;组成。不允许出现中文。
      
5.函数命名及定义方法:
    1):函数名称应根据实际用途来命名.
2):函数名称首字母和里面每个名词头必须是大写
3):每个函数必须有注释表明参数和实际用途,      
4):与类的命名区别是类以C开头,其余的命名规则一致。不过,类是一个静态的描述而函数是一个动态的实现。所以类一般是名词性较强而函数是动词性比较的强。
下面列出几个函数命名例子:

       ///////////////////////////////////////////////////////////////////////
       // 函数名       : PrintArray
       // 功能描述     : 打印数组
       // 参数         : $arr ;数组名
       // 返回值       :
       ///////////////////////////////////////////////////////////////////////




   4):函数的里面的变量的定义因该全部放在{}开头之内,而不是到处定义。变量定义必须整齐规范,尽可能的初始化。
5:)变量定义和代码开始之间必须空格两行,例如
      

见最后部分


       6):函数体不宜过大,避免超过一百行代码。函数功能应该单一

6.类定义及注意事项
       1):类的定义按照实际用途命名,然后需要在前面加上大写的C前缀。
       2):每个类都要实现构造和析构两个成员函数,用于初始化和资源释放。
       3):变量定义和成员函数定义要分开定义,
       4):要做到层次分明结构清晰,下面是一个例子:

见最后部分


      
第三部分:文件组织
7.文件的说明:
       每个文件开头包括(*.php)都加上文件内容说明,应该包括以下内容:
       文件名称,创建日期,功能说明,作者,最后修改日期,修改人,如下:

//////////////////////////////////////////////////////////////////////////////////
//文件名称:    file.php
//创建日期:    2006/04/19
//功能说明:    打印数组
//作    者:    andylin
//版本号:   1.0.0.1
//////////////////////////////////////////////////////////////////////////////////////


8.每一个项目或者新产品都有一个Readme.txt [项目文件分布及功能说明,使用的外部连接库资源]和一个文档设计.doc(整体的说明项目的加构)。
9.文件结构的组织:./images ./index ./include ./flash 其中 ./images 存放图片文件,include中是系统要引用的重要文件,一般在./include/parameter中存放参数文件,在./include/config中存放配置文件,./include/function中存放全局的方法。在./include/class中存放类的定义与实现。./falsh存放flash文件。./style存放CSS文件。./scripts 存放比如JavaScrip脚本文件。./media存放多媒体文件。
第四部分:注释
10.单行注释用//多行注释用/* */组合。推荐使用//注释(因为/* */不允许嵌套使用,而//可以)。
11.文件修改的注释:如果文件修改了在文件的说明后面加上这些东西
       ///////////////////////////////////////////////////////////////////////
       // 修改日期:        :2006/10/1
       // 修改人:          :andylin
// 版本号:            :1.0.02
       // 修改目的            :
       /*
              说明目的(例如:添加几个新的方法)
       */
///////////////////////////////////////////////////////////////////////
       最后在修改的地方标上其实修改和结束修改的标志。格式为:
       //modify start + 版本号(by 作者)
              &#8230;(源代码)
       //modify end + 版本号(by 作者)
12.关于引入语句的注释:

//数据库类操作
requireonce(&#8220;./class/Db.php&#8221;);

要注意的几点:
a): 推荐使用requireonce
b): 所有的requireonce都放在最前面。文件信息之后。

第五部分:其余

13.命名空间:如果可能尽量的使用。将功能比较相似的模块放在一个名字空间中。
14.空行:空行将逻辑相关的代码段分隔开,以提高可读性。
下列情况应该总是使用两个空行:
a):一个源文件的两个片段(section)之间
b): 类声明与声明之间
c): 两个方法之间
d): 方法内的局部变量和方法的第一条语句之间

下列情况应该总是使用一个空行:
a):一个方法内的两个逻辑段之间,用以提高可读性
b):块注释或单行注释之前


第六部分:参考源代码范例

////////////////////////////////////////////////////
//文件名称:  CPoint.php
//创建日期:   2007/02/01
//功能说明:   关于点的操作的类
//作    者:   andylin
//版本号:    1.0.0.1
////////////////////////////////////////////////////

////////////////////////////////////////////////////
// 修改日期:          :2007/03/01
// 修改人:            :andylin
// 版本号:       :1.0.02
// 修改目的      
/*
     添加了PrintPoint方法
*/
////////////////////////////////////////////////////

// 版本号 + modify start (by 作者)
         
// 版本号 + modify end(by 作者)


requireonce("./math.php");

namespace Math
{
     class CPoint extends CObject
     {   
         //构造函数 (最好把构造函数和析构函数放在最前面
         public function _constructor($nx, $ny)
         {
              $x = $nx;
              $y = $ny;
         }

         //析构函数
         public function _destructor()
         {
         }

         //1.0.0.2 modefy start(by andylin)
         ///////////////////////////////////////////////////////////////////////
         // 函数名       : PrintPoint
         // 功能描述     : 打印Point的x,y
         // 参数         : 如果n == 1 print x 如果 n == 2 print y 否则print x, y
         // 返回值       : 无
         ///////////////////////////////////////////////////////////////////////

         //类似上面的声明,如果函数复杂应该要写,否者可以不写。比如下面的几个函数很简单就可以不写
                public function PrintPoint($n)
         {
              if ($n == 1)
              {
                   echo "x = ", x;
              }
              else if ($n == 2)
              {
                   echo "y = ", y;
              }
              else
              {
                   echo "x = ", x;
                  echo "y = ", y;
              }
         }
         //1.0.0.2 modefy end(by andylin)

         public function SetX($nx)
         {
              $this->x = $nx;
         }

         public function SetY($ny)
         {
              $this->y = $ny;
         }

         public function GetX()
         {
              return $this->x;
         }

         public function GetY()
         {
              return $this->y;
         }

         //Data Session
         private $x   = 0; //特殊的如i, j, k, x, y, n之类的可以不按命名规则。
         private $y    = 0 //否者,应当遵循。
     };
};


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-104390-1-1.html 上篇帖子: PHP中对象的clone和引用的区别(Object Cloning and Passing by Reference in PHP) 下篇帖子: RUBiS的PHP版本搭建详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表