首頁  >  文章  >  後端開發  >  新手PHP 編碼規範及建議

新手PHP 編碼規範及建議

小云云
小云云原創
2017-12-05 11:14:211230瀏覽

想要當一個出色的程式設計師,一手好的程式碼規格是很重要的,那麼如何才能寫出一手好程式碼呢?本文我們就給大家一些PHP 編碼規格及建議。

編碼規格

  • PHP程式碼檔案必須以

<?php //开头

// 不结尾

 

  • PHP程式碼檔案必須以不含BOM的UTF-8編碼。

例sublime, setting增加,"show_encoding" : true

 

  • 每行的字元數不超過80 個字元

例,sublime
"word_wrap": "true",
"wrap_width": 80,

 

  • tap鍵4個空格

例,sublime
"tab_size": 4,

 

  • PHP程式碼中應該只定義類別(trait) /函數/常數/其他會產生副作用的操作(如:產生檔案輸出以及修改.ini 設定檔等),只能選其一。

例,
a.php
class A
{

}

b.php
function demo()
{

}

c.php
define(&#39;A&#39;, value);

d.php
ini_set(&#39;some_vars&#39;, value);

 

  • 類別/trait/Interface的命名必須遵循 StudlyCaps 大寫開頭的駝峰命名規格。

class StudlyCaps
{

}

trait StudlyCaps
{

}

Interface StudlyCaps
{

}

 

  • 類別中的常數所有字母都必須大寫,單字間用底線分隔。

define(&#39;FOO_BAR&#39;, &#39;something more&#39;);

const FOO_BAR = value;

 

  • 方法(類別/trait中)名稱必須符合 camelCase 式的小寫開頭駝峰命名規格。

class StudlyCaps
{
    public function studlyCaps()
    {
        // coding...
    }
}

 

  • 函數名稱必須符合 snake_case 式的底線式命名規格。

function snake_case()
{
    // coding...
}

 

  • N(private)方法(類別/trait中)名稱必須符合_camelCase 式的前置底線小寫的開頭駝峰命名規範。

class StudlyCaps
{
    private function _studlyCaps()
    {
        // coding...
    }
}

 

  • 方法名稱 第一個字 為動詞。

class StudlyCaps
{
    public function doSomething()
    {
        // coding...
    }
}

 

  • 變數 必須符合 camelCase 式的小寫開頭駝峰命名規格。

class StudlyCaps
{
    public function doSomething()
    {
        $someVariable = &#39;demo&#39;;
        // coding...
    }
}

 

  • 方法/函數多參數時,之間要有1個空格

class StudlyCaps
{
    public function doSomething($variableOne, $variableTwo)
    {
        // coding...
    }
}

 

  • 運算子/表達式要有一個空格

#
$a = $b + $c;
$a = $b . $c;

 

  • 每個namespace 命名空間宣告語句區塊和use 宣告語句區塊後面,必須插入一個空白行。

namespace Standard;
// 空一行
use Test\TestClass;//use引入类
// 空一行

 

  • 類別的開始花括號「{ 「必須寫在函數宣告後自成一行,結束花括號」}」也必須寫在函數主體後自成一行。

class StudlyCaps
{

}

 

  • class StudlyCaps
    {
        public function studlyCaps()
        {
            // coding...
        }
    }
    
    function snake_case()
    {
        // coding...
    }
  •  

    方法/函數的開始花括號{ 必須寫在函數宣告後自成一行,結束花括號}也必須寫在函數主體後面自成一行。
  • abstract class StudlyCaps
    {
    	abstract public function studlyCaps();
    
    	final public static function studlyCapsOne()
    	{
    
    	}
    }
  •  

    類別的屬性和方法必須加入存取修飾符(private、protected 以及public),abstract 以及final 必須聲明在訪問修飾符之前,而static 必須聲明在存取修飾符之後。
  • if ($valueOne === $valueTwo) {
      // code...
    }
    
    switch ($valueThree) {
      case &#39;value&#39;:
        // code...
        break;
    
      default:
        // code...
        break;
    }
    
    do {
      // code...
    } while ($valueFour <= 10);
    
    while ($valueFive <= 10) {
      // code...
    }
    
    for ($i = 0; $i < $valueSix; $i++) {
      // code...
    }
    
    $demo = new Demo()
    $demo->doSomething();
    
    do_something();</p></li> </ul>
    <p></p>
    <ul class=" list-paddingleft-2">控制結構的關鍵字後 必須 要有一個空格符,而呼叫方法或函數時一定不可 有。 <li>
    <p></p>
    <pre class="brush:php;toolbar:false">if ($valueOne === $valueTwo) {
      // code...
    }
    
    switch ($valueThree) {
      case 'value':
        // code...
        break;
    
      default:
        // code...
        break;
    }
    
    do {
      // code...
    } while ($valueFour <= 10);
    
    while ($valueFive <= 10) {
      // code...
    }
    
    for ($i = 0; $i < $valueSix; $i++) {
      // code...
    }
  •  

    控制結構的開始花括號{ 必須寫在宣告的同一行,而結束花括號} 必須寫在主體後自成一行。
  • if ($valueOne === $valueTwo) {// 控制结构(右边和)左边不加空格
      // code...
    }
  •  

在控制結構的開始左括號後和結束右括號前,都一定不可有空格符號。

  • // heredoc语法
    $sql = <<<SQL
    SELECT delivery_id
    FROM d_test
    WHERE delivery_id
    IN (123,234)
    GROUP BY delivery_id
    HAVING SUM(send_number) <= 0;
    SQL;

     

  • 編碼建議

    #sql過長
  • ##

    if ($a > 0
        && $b > 0
        && $c > 0
        && $d > 0
        && $e > 0) {
    
    }
     

if等控制結構條件過長
  • public function tooLangFunction(
          $valueOne   = '',
          $valueTwo   = '',
          $valueThree = '',
          $valueFour  = '',
          $valueFive  = '',
          $valueSix   = '')
    {
        //coding...
    }
     

方法或函數參數大於三個換行
  • $this->nameTest->functionOne()
                   ->functionTwo()
                   ->functionThree();
     

連結運算超過兩個
  • $a = [
        'aaa' => 'aaa',
        'bbb' => 'bbb'
    ];
     

##陣列php5.4以後,用[]
  • $str = 'str';
    $arg = "$str";
     
    • 單引號多引號

    • #字串中無變量,單引號

字串中有變量,雙引號

  • /**
     * 类描述
     *
     * desc
     */
    class StandardExample
    {
      /**
       *  常量描述.
       *
       * @var string
       */
      const THIS_IS_A_CONST = '';
    
      /**
       * 属性描述.
       *
       * @var string
       */
      public $nameTest = '';
    
      /**
       * 构造函数.
       *
       * 构造函数描述
       * @author name <email>
       * @param  string $value 形参名称/描述
       * @return 返回值类型        返回值描述
       * 返回值类型:string,array,object,mixed(多种,不确定的),void(无返回值)
       */
      public function __construct($value = '')
      {
        // coding...
      }
     

聲明類別或方法或函數新增描述&屬性描述&作者
  • /**
     * 成员方法名称.
     *
     * 成员方法描述
     *
     * @param  string $value 形参名称/描述
     *
     * @example domain/api/controller/action?argu1=111&argu2=222
     */
    public function testFunction($value = '')
    {
        // code...
    }
     

#api方法提供測試範例example
  • try {
    
        // coding...
    
    } catch (\Exception $e) {
      // coding...
    }
     

使用try…catch…
  • // 改写doSome为doSomething
    class StandardExample
    {
      /**
       * 方法列表
       *
       * @var array
       */
      private $_functionList = [];
    
      public function __construct($functionList = array())
      {
        $this->_functionList = $value;
      }
    
      public function doSome()
      {
        $this->functionOne();
        $this->functionTwo();
        $this->functionThree();
        $this->functionFour();
      }
    
      public function doSomething()
      {
          foreach($this->_functionList as $function) {
              $this->$function();
          }
      }
    
      ...
    }
     

連續呼叫多個方法(大於3個)使用foreach
  • // +----------------------------------------------------------------------
    // | Company Name  xx服务
    // +----------------------------------------------------------------------
    // | Copyright (c) 2017 http://domain All rights reserved.
    // +----------------------------------------------------------------------
    // | Author: name <email>
    // +----------------------------------------------------------------------
     ########## ###文件頂部進行版權聲明###
// +----------------------------------------------------------------------
// | Company Name  xx服务
// +----------------------------------------------------------------------
// | Copyright (c) 2017 http://domain All rights reserved.
// +----------------------------------------------------------------------
// | Author: name <email>
// +----------------------------------------------------------------------

以上内容就给新手程序员的一些编写代码的规范及建议,希望能帮助到大家。

相关推荐:

怎样优化自己的JavaScript代码

PHP 代码的复用简单教程

PHP 代码规范

以上是新手PHP 編碼規範及建議的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn