目錄
編碼規格
在控制結構的開始左括號後和結束右括號前,都一定不可有空格符號。
首頁 後端開發 php教程 新手PHP 編碼規範及建議

新手PHP 編碼規範及建議

Dec 05, 2017 am 11:14 AM
php 建議 規範

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

編碼規格

  • PHP程式碼檔案必須以 <?php 標籤開始。

&lt;?php //开头

// 不结尾
登入後複製

 

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

例sublime, setting增加,&quot;show_encoding&quot; : true
登入後複製

 

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

例,sublime
&quot;word_wrap&quot;: &quot;true&quot;,
&quot;wrap_width&quot;: 80,
登入後複製

 

  • tap鍵4個空格

例,sublime
&quot;tab_size&quot;: 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 &lt;= 10);
    
    while ($valueFive &lt;= 10) {
      // code...
    }
    
    for ($i = 0; $i &lt; $valueSix; $i++) {
      // code...
    }
    
    $demo = new Demo()
    $demo-&gt;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 &lt;= 10);
    
    while ($valueFive &lt;= 10) {
      // code...
    }
    
    for ($i = 0; $i &lt; $valueSix; $i++) {
      // code...
    }
    登入後複製
  •  

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

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

  • // heredoc语法
    $sql = &lt;&lt;&lt;SQL
    SELECT delivery_id
    FROM d_test
    WHERE delivery_id
    IN (123,234)
    GROUP BY delivery_id
    HAVING SUM(send_number) &lt;= 0;
    SQL;
    登入後複製

     

  • 編碼建議

    #sql過長
  • ##

    if ($a &gt; 0
        &amp;&amp; $b &gt; 0
        &amp;&amp; $c &gt; 0
        &amp;&amp; $d &gt; 0
        &amp;&amp; $e &gt; 0) {
    
    }
    登入後複製
     

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

方法或函數參數大於三個換行
  • $this-&gt;nameTest-&gt;functionOne()
                   -&gt;functionTwo()
                   -&gt;functionThree();
    登入後複製
     

連結運算超過兩個
  • $a = [
        'aaa' =&gt; 'aaa',
        'bbb' =&gt; 'bbb'
    ];
    登入後複製
     

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

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

字串中有變量,雙引號

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

聲明類別或方法或函數新增描述&屬性描述&作者
  • /**
     * 成员方法名称.
     *
     * 成员方法描述
     *
     * @param  string $value 形参名称/描述
     *
     * @example domain/api/controller/action?argu1=111&amp;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-&gt;_functionList = $value;
      }
    
      public function doSome()
      {
        $this-&gt;functionOne();
        $this-&gt;functionTwo();
        $this-&gt;functionThree();
        $this-&gt;functionFour();
      }
    
      public function doSomething()
      {
          foreach($this-&gt;_functionList as $function) {
              $this-&gt;$function();
          }
      }
    
      ...
    }
    登入後複製
     

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

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

相关推荐:

怎样优化自己的JavaScript代码

PHP 代码的复用简单教程

PHP 代码规范

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

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

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南

CakePHP 日期和時間 CakePHP 日期和時間 Sep 10, 2024 pm 05:27 PM

CakePHP 日期和時間

CakePHP 檔案上傳 CakePHP 檔案上傳 Sep 10, 2024 pm 05:27 PM

CakePHP 檔案上傳

CakePHP 專案配置 CakePHP 專案配置 Sep 10, 2024 pm 05:25 PM

CakePHP 專案配置

CakePHP 路由 CakePHP 路由 Sep 10, 2024 pm 05:25 PM

CakePHP 路由

討論 CakePHP 討論 CakePHP Sep 10, 2024 pm 05:28 PM

討論 CakePHP

CakePHP 快速指南 CakePHP 快速指南 Sep 10, 2024 pm 05:27 PM

CakePHP 快速指南

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發

See all articles