本代码规范只针对本公司PHP小组。

1. 文本标记:

不允许使用短标记,所有PHP标记必须使用完整的。

  1. 这样是可以的: 
  2. <?php 
  3. //代码区 
  4. ?> 
  5.  
  6. 这样是不可以的: 
  7. <? 
  8. //代码区 
  9. ?> 

2. 方法命名规范

2.1 必须使用驼峰命名规范

  1. <?php 
  2. function displayName($name) { 
  3.     echo $name
  4. ?> 

方法名一般由第一个动词,后面名词形式构成。所有动作命名一定要简洁,明了。

这里我们主要还要讲一下我们sf里面对action的命名方式:

  1. <?php  
  2.   
  3. /**  
  4.  * lmsReg actions.  
  5.  * 这里首先我们必须写好我们的注视,这个是必须的。  
  6.  * @package    sitLims  
  7.  * @subpackage lmsReg  
  8.  * @author     xiaobo_lee@live.com  
  9.  * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $  
  10.  */  
  11. class lmsRegActions extends sfActions {  
  12.     /**  
  13.      * 将排课数据写入数据库  
  14.      * @param sfWebRequest $request REQUEST对象
  15.      * @return type   
  16.      */  
  17.     public function executeRegAdd(sfWebRequest $request) {  
  18.     //代码区。。。。。完成代码  
  19.     }  
  20.     /**  
  21.      * 得到该选课组下的所有分组  
  22.      * @param sfWebRequest $request  
  23. * @return json 
  24.      */  
  25.     public function executeAjaxTimetableGroups(sfWebRequest $request) {  
  26.     //这是一个页面AJAX请求数据的action,在命名的时候我们在方法名称之前加AJAX标记。 
  27. //说明是ajax请求。AJAX请求页面最后都要输出json,并在程序内部做好错误控制。  
  28.     }  

下面是我们普通类文件的命名和规范。

  1. <?php 
  2.  
  3. /** 
  4.  * lmsApprovalProcess 
  5.  *  
  6.  * This class has been auto-generated by the Doctrine ORM Framework 
  7.  *  
  8.  * @package    sitLims 
  9.  * @subpackage model 
  10.  * @author     xiaobo_lee@live.com 
  11.  * @version    SVN: $Id: Builder.php 7490 2010-03-29 19:53:27Z jwage $ 
  12.  */ 
  13. class lmsApprovalProcess extends BaselmsApprovalProcess { 
  14.  
  15.     /** 
  16.      * 返回审批的票据,票据的后面六位是随机生成的。 
  17.      * @param string $model     模型名称 
  18.      * @param integer $labcenter 实验中心的ID 
  19.      * @return string 返回有模型名称+实验中心ID+随机数组成的ticket 
  20.      */ 
  21.     static function generateApprovalTicket($model$labcenter) { 
  22.         $random = ""
  23.         $source = '123456789ABCDEFGHIJKLMNPQRSTUVWXYZ'
  24.         for ($i = 0; $i < 10; $i++) { 
  25.             $random .= $source{mt_rand(0, 33)};    //生成php随机数  
  26.         } 
  27.         $ticket = $model . "$" . $labcenter . "$" . $random
  28.         //检查数据库是否存在已存在的ticket 
  29.         $useTickect = Doctrine_Core::getTable('lmsApprovalProcess')->createQuery('a')->where('a.approval_ticket = ?'$ticket)->count(); 
  30.         if ($useTickect > 0) { 
  31.                 //如果存在则递归 
  32.             lmsApprovalProcess::returnApprovalTicket($model$labcenter); 
  33.         } 
  34.         return $ticket
  35.     } 

这里在把几个基础动作的名称定义一下:

新建页面: new

创建动作: create

显示页面:show

删除动作: delete

比如:createCategory,showCategory

2.2 针对全局变量。使用全局变量命令方式。

  1. <?php  
  2. $_GLOBAL['_beginTime_']  
  3. ?>  

2.3 普通变量:

普通变量也采用驼峰法,需要在变量之前加表示变量类型的前缀。

  1. 字符串:    $strMyName 
  2. 数组:       $arrMyArray 
  3. 对象:        $objMyObject 
  4. 资源:      $resource 
  5. 布尔值:    $flag 

3.还有一个就是在页面中使用js的时候需要注意的一些事项。

关于js的方法命名,这里我们为了和php里面的区分,这里我们把动作的词放在后面。

  1. //显示复制排课
  2. function copyTimetableShow() { 
  3.     $("#copyTimetableWindows").window('open'); 
  4.     $.getJSON('/lms/lmsReg/ajaxTimetableGroups',{ 
  5.         timetable_number: $("#timetable").val() 
  6.     },function(data){ 
  7.  
  8.         }) 
  9. //取消复制排课
  10. function copyTimetableCancel() { 
  11.     $("#copyTimetableWindows").window('close'); 
  12.     $("input[name='copyReg']:checkbox").each(function(){ 
  13.         $(this).attr('checked',false); 
  14.     }) 
  15. //设置复制排课
  16. function copyTimetableSet() { 
  17.  

4.良好的注视是非常重要的。。。