php規範解析

來源:互聯網
上載者:User
想寫好php程式,那麼大家一定要知道php有哪些規範,本文主要和大家分享php規範解析,希望能協助到大家。

<?php/** * 符合psr-1,2的編程執行個體 * * @author GreenForestQuan */namespace Standard; // 頂部命名空間// 空一行use Test\TestClass;//use引入類/** * 類描述 * * 類名必須大寫開頭駝峰. */abstract class StandardExample // {}必須換行{  /**   *  常量描述.   *   * @var string   */  const THIS_IS_A_CONST = ''; // 常量全部大寫底線分割  /**   * 屬性描述.   *   * @var string   */  public $nameTest = ''; // 屬性名稱建議開頭小寫駝峰                       // 成員屬性必須添加public(不能省略), private, protected修飾符  /**   * 屬性描述.   *   * @var string   */  private $_privateNameTest = ''; // 類私人成員屬性,【個人建議】底線小寫開頭駝峰  /**   * 建構函式.   *   * 建構函式描述   *   * @param  string $value 形參名稱/描述   */  public function __construct($value = '')// 成員方法必須添加public(不能省略), private, protected修飾符  {// {}必須換行    $this->nameTest = new TestClass();    // 鏈式操作    $this->nameTest->functionOne()                   ->functionTwo()                   ->functionThree();    // 一段代碼邏輯執行完畢 換行    // code...  }  /**   * 成員方法名稱.   *   * 成員方法描述   *   * @param  string $value 形參名稱/描述   *   * @return 傳回值類型        傳回值描述   * 傳回值類型:string,array,object,mixed(多種,不確定的),void(無傳回值)   */  public function testFunction($value = '')// 成員方法必須小寫開頭駝峰  {      // code...  }  /**   * 成員方法名稱.   *   * 成員方法描述   *   * @param  string $value 形參名稱/描述   *   * @return 傳回值類型        傳回值描述   */  private function _privateTestFunction($value = '')// 私人成員方法【個人建議】底線小寫開頭駝峰  {      // code...  }  /**   * 成員方法名稱.   *   * 成員方法描述   *   * @param  string $value 形參名稱/描述   *   * @return 傳回值類型        傳回值描述   */  public static function staticFunction($value = '')// static位於修飾符之後  {    // code...  }  /**   * 成員方法名稱.   *   * 成員方法描述   *   * @param  string $value 形參名稱/描述   *   * @return 傳回值類型        傳回值描述   */  abstract public function abstractFunction($value = ''); // abstract位於修飾符之前  /**   * 成員方法名稱.   *   * 成員方法描述   *   * @param  string $value 形參名稱/描述   *   * @return 傳回值類型        傳回值描述   */  final public function finalFunction($value = '')// final位於修飾符之前  {    // code...  }  /**   * 成員方法名稱.   *   * 成員方法描述   *   * @param  string $valueOne 形參名稱/描述   * @param  string $valueTwo 形參名稱/描述   * @param  string $valueThree 形參名稱/描述   * @param  string $valueFour 形參名稱/描述   * @param  string $valueFive 形參名稱/描述   * @param  string $valueSix 形參名稱/描述   *   * @return 傳回值類型        傳回值描述   */  public function tooLangFunction(    $valueOne   = '', // 變數命名可小寫開頭駝峰或者底線命名,個人那習慣,據說底線可讀性好    $valueTwo   = '',    $valueThree = '',    $valueFour  = '',    $valueFive  = '',    $valueSix   = '')// 參數過多換行  {    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...    }  }}
編碼規範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.phpclass A{}b.phpfunction demo(){}c.phpdefine('A', value);d.phpini_set('some_vars', value);類/trait/Interface的命名必須遵循 StudlyCaps 大寫開頭的駝峰命名規範。class StudlyCaps{}trait StudlyCaps{}Interface StudlyCaps{}類中的常量所有字母都必須大寫,單詞間用底線分隔。define('FOO_BAR', 'something more');const FOO_BAR = value;方法(類/trait中)名稱必須符合 camelCase 式的小寫開頭駝峰命名規範。class StudlyCaps{    public function studlyCaps()    {        // coding...    }}函數名稱必須符合 snake_case 式的底線式命名規範。function snake_case(){    // coding...}私人的(private)方法(類/trait中)名稱必須符合 _camelCase 式的前置底線小寫開頭駝峰命名規範。class StudlyCaps{    private function _studlyCaps()    {        // coding...    }}方法名稱 第一個單詞 為動詞。class StudlyCaps{    public function doSomething()    {        // coding...    }}變數 必須符合 camelCase 式的小寫開頭駝峰命名規範。class StudlyCaps{    public function doSomething()    {        $someVariable = 'demo';        // 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...}類的屬性和方法 必須 添加存取修飾詞(private、protected 以及 public),abstract 以及 final 必須 聲明在存取修飾詞之前,而 static 必須 聲明在存取修飾詞之後。abstract class StudlyCaps{    abstract public function studlyCaps();    final public static function studlyCapsOne()    {    }}控制結構的關鍵字後 必須 要有一個空格符,而調用方法或函數時則 一定不可 有。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...}$demo = new Demo()$demo->doSomething();do_something();控制結構的開始花括弧 { 必須 寫在聲明的同一行,而結束花括弧 } 必須 寫在主體後自成一行。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...}編碼建議sql過長// heredoc文法$sql = <<<SQLSELECT delivery_idFROM d_testWHERE delivery_idIN (123,234)GROUP BY delivery_idHAVING SUM(send_number) <= 0;SQL;if等控制結構條件過長if ($a > 0    && $b > 0    && $c > 0    && $d > 0    && $e > 0) {}方法或函數參數大於三個換行public function tooLangFunction(      $valueOne   = '',      $valueTwo   = '',      $valueThree = '',      $valueFour  = '',      $valueFive  = '',      $valueSix   = ''){    //coding...}鏈式操作超過兩個$this->nameTest->functionOne()               ->functionTwo()               ->functionThree();數組php5.4以後,使用[]$a = [    'aaa' => 'aaa',    'bbb' => 'bbb'];/*單引號多引號字串中無變數,單引號字串中有變數,雙引號$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...  }//api方法提供測試範例example/** * 成員方法名稱. * * 成員方法描述 * * @param  string $value 形參名稱/描述 * * @example domain/api/controller/action?argu1=111&argu2=222 */public function testFunction($value = ''){    // code...}使用try...catch...try {    // coding...} catch (\Exception $e) {  // coding...}// 連續調用多個方法(大於3個)使用foreach// 改寫doSome為doSomethingclass 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();      }  }  ...}檔案頂部進行著作權聲明// +----------------------------------------------------------------------// | Company Name  xx服務// +----------------------------------------------------------------------// | Copyright (c) 2017 http://domain All rights reserved.// +----------------------------------------------------------------------// | Author: name <email>// +----------------------------------------------------------------------

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.