php大牛分享:php代碼編寫的規範,總結的很全

來源:互聯網
上載者:User
這篇文章主要介紹了關於php大牛分享:php代碼編寫的規範,總結的很全,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

一直以來,php都是Web開發中使用最頻繁的程式設計語言,也正因為如此,眾多的從業者,導致了很多不規範的代碼。

PHP-FIG(PHP架構介面組織)制定了一整套完善的標準,推薦給廣大的php開發使用。

一共制定了五套標準:

(PSR: PHP推薦標準)

PSR-1: 基本的代碼風格;

PSR-2: 嚴格的代碼風格;

PSR-3: 日誌記錄器介面;

PSR-4: 自動載入

其實還有一個PSR-0,不過已被PSR-4代替了,所以不存在 PSR-0版本。

一、PSR-1:基本代碼風格

1. 標籤: 必須要把php代碼寫在 <?php 和 ?>, 或者 <?= 和 ?>標籤中,不得使用其它格式的標籤;

2. 編碼: 必須採用無BOM頭的UTF-8字元集,目前大多數的IDE編輯器都自動支援;

3. 類名: 必須採用駝峰式: CamelCase,這種格式也叫標題式,例如: IndexController;

4. 常量: 必須採用大寫字母,多個單詞之間採用底線串連: APP_PATH;

5. 方法: 必須採用小駝峰式: camelCase(),例如: getStatus();

二、PSR-2: 嚴格的代碼風格

1. 代碼必須首先符合PSR-1的規範;

2. 縮排: 必須統一採用四個空格;

3. 換行: 必須使用UNIX換行風格;

4. 結尾: 必須要有一個空行,並且不允許有關閉標籤 ?>;

5. 每行代碼不超過80字元,最多不能超過120個字元;

6. 關鍵字全部使用小寫字母,例如: true,false,use....;

7. 命名空間:後面必須緊跟一個空行;

8. use匯入空間後,也必須緊跟一個空行;

9. 類的起始括弧{, 必行另起一行;

10. 方法與函數的起始括弧{,也必須另起一行;

11. 類中所有成員,必須聲明可見度:public, protected,private;

12. 類中成員的特徵: abstract, final, 必須放在可見度聲明之前;

13. static 關鍵字,必須放在類成中的可見度聲明之後;

14. 控制結構的起始括弧必須與語句在同一行,例如: if () {};

15. 控制結構的參數之間,逗號之後必須要有空格,例如:($m, $n);

三、PSR-3: 日誌記錄介面

這個規範與前面的規範不同,它不是一個推薦標準,而是一個介面標準,規則了日誌記錄器可以實現的方法。

只要遵循這個標準,就必須實現以下9個方法:

<?phpnamespace Psr\Log;interface LoggerInterface{public function emergency($message, array $context=[]);public function alert($message, array $context=[]);public function critical($message, array $context=[]);public function error($message, array $context=[]);public function warning($message, array $context=[]);public function notice($message, array $context=[]);public function info($message, array $context=[]);public function debug($message, array $context=[]);public function log($level, $message, array $context=[]);}

四、PSR-4: 自動載入器

1. 為什麼要有自動載入器?

之前一個php指令碼中,可能會載入大量的檔案:

<?php include 'demo1.php';include 'demo2.php';include 'demo3.php';......

有了自動載入器,就可以根據功能,按需載入。

在沒有該標準之前, 我們可以通過__autoload()和spl_autoload_register()進行載入器註冊,現在可以藉助命名空間實現自動載入。

2. 自動載入原理

主要是將類,介面,trait等所在檔案路徑,與代碼的命名空間進行映射,使之一一對應,賦予了命名空間第二次生命。

例如:

<?phpnamespace app\controller;class UserController{//代碼}

說明:

1. 類名: app\controller\UserController;

2. 類檔案與類同名: app/controller/UserController.php

3. 類名與類檔案名稱,通過命名空間進行映射:

<?phpdefine('ROOT_PATH', __DIR__);spl_autoload_register(function($className){require ROOT_PATH . '/' . str_replace('\\','/', $className) . '.php';});

4. 將類名與命名空間進行關聯,是現代php開發架構的基礎,composer也是基於此實現了組件自動載入;

更多的編程規範,可以登入php中文網(www.php.cn)查閱。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.