亚洲欧美日韩综合系列在线_91精品人妻一区二区_欧美大肥婆一级特大AA片_九色91视频免费观看_亚洲综合国产精品_av中文字幕在线不卡_久久精品色综合网_看黄色视频的软件_无卡无码高清中文字幕码2024_亚洲欧美日韩天堂网

php大牛分享:php代碼編寫的規(guī)范,總結(jié)的很全

來源:不言 發(fā)布時間:2018-12-15 16:12:52 閱讀量:1053

這篇文章主要介紹了關(guān)于php大牛分享:php代碼編寫的規(guī)范,總結(jié)的很全,有著一定的參考價值,現(xiàn)在分享給大家,有需要的朋友可以參考一下

一直以來,php都是Web開發(fā)中使用最頻繁的編程語言,也正因為如此,眾多的從業(yè)者,導(dǎo)致了很多不規(guī)范的代碼。

PHP-FIG(PHP框架接口組織)制定了一整套完善的標準,推薦給廣大的php開發(fā)使用。

一共制定了五套標準:

(PSR: PHP推薦標準)

PSR-1: 基本的代碼風(fēng)格;

PSR-2: 嚴格的代碼風(fēng)格;

PSR-3: 日志記錄器接口;

PSR-4: 自動加載

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

一、PSR-1:基本代碼風(fēng)格

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

2. 編碼: 必須采用無BOM頭的UTF-8字符集,目前大多數(shù)的IDE編輯器都自動支持;

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

4. 常量: 必須采用大寫字母,多個單詞之間采用下劃線連接: APP_PATH;

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

二、PSR-2: 嚴格的代碼風(fēng)格

1. 代碼必須首先符合PSR-1的規(guī)范;

2. 縮進: 必須統(tǒng)一采用四個空格;

3. 換行: 必須使用UNIX換行風(fēng)格;

4. 結(jié)尾: 必須要有一個空行,并且不允許有關(guān)閉標簽 ?>;

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

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

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

8. use導(dǎo)入空間后,也必須緊跟一個空行;

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

10. 方法與函數(shù)的起始括號{,也必須另起一行;

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

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

13. static 關(guān)鍵字,必須放在類成中的可見性聲明之后;

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

15. 控制結(jié)構(gòu)的參數(shù)之間,逗號之后必須要有空格,例如:($m, $n);

三、PSR-3: 日志記錄接口

這個規(guī)范與前面的規(guī)范不同,它不是一個推薦標準,而是一個接口標準,規(guī)則了日志記錄器可以實現(xiàn)的方法。

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<?php

namespace 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腳本中,可能會加載大量的文件:

1

2

3

4

5

<?php

include 'demo1.php';

include 'demo2.php';

include 'demo3.php';

......

有了自動加載器,就可以根據(jù)功能,按需加載。

在沒有該標準之前, 我們可以通過__autoload()和spl_autoload_register()進行加載器注冊,現(xiàn)在可以借助命名空間實現(xiàn)自動加載。

2. 自動加載原理

主要是將類,接口,trait等所在文件路徑,與代碼的命名空間進行映射,使之一一對應(yīng),賦予了命名空間第二次生命。

例如:

1

2

3

4

5

6

<?php

namespace app\controller;

class UserController

{

//代碼

}

說明:

1. 類名: app\controller\UserController;

2. 類文件與類同名: app/controller/UserController.php

3. 類名與類文件名,通過命名空間進行映射:

1

2

3

4

5

<?php

define('ROOT_PATH', __DIR__);

spl_autoload_register(function($className){

require ROOT_PATH . '/' . str_replace('\\','/', $className) . '.php';

});

4. 將類名與命名空間進行關(guān)聯(lián),是現(xiàn)代php開發(fā)框架的基礎(chǔ),composer也是基于此實現(xiàn)了組件自動加載;


標簽: PHP
分享:
評論:
你還沒有登錄,請先