国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PSR-2:編碼樣式指南

K_B_Z / 711人閱讀

摘要:編碼樣式指南翻譯薛粲授權(quán)許可這份文檔是的非官方譯文。編碼樣式指南擴展和擴充了基礎(chǔ)編碼規(guī)范。概述代碼必須遵循一份編碼樣式指南。行不得對行寬設(shè)置硬性限制。對行寬的軟性限制必須是個字符超出時自動樣式檢查必須發(fā)出警告但不得產(chǎn)生錯誤。

PSR-2:編碼樣式指南

翻譯:薛粲
授權(quán)許可:CC BY-NC 4.0

這份文檔是《PSR-2: Coding Style Guide》的非官方譯文。

《PSR-2:編碼樣式指南》擴展和擴充了《PSR-1:基礎(chǔ)編碼規(guī)范》。

這份指南的初衷是減少當(dāng)我們閱讀不同作者編寫的代碼時遇到的認(rèn)知差異。它期望通過列舉了一組可供共同遵循的規(guī)則用于格式化 PHP 源代碼來實現(xiàn)這一目的。

英文原文使用的關(guān)鍵詞 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", 以及 "OPTIONAL" 遵循 RFC 2119 的描述。譯文中根據(jù)上下文可能會使用不同的詞匯來對應(yīng)這些關(guān)鍵詞,并加粗顯示。

1. 概述

代碼必須遵循一份 PSR 編碼樣式指南 PSR-1。

代碼必須使用 4 個空格而不是制表符作為縮進。

不得對行寬進行硬性限制;軟性限制必須是 120 個字符;每行應(yīng)該包含 80 個或者更少的字符。

namespace 聲明之后必須有一個空行,在 use 聲明之后也必須有一個空行。

類的左花括號必須在下一行,右花括號必須在內(nèi)容后的下一行。

方法的左花括號必須在下一行,右花括號必須在內(nèi)容后的下一行。

必須為所有屬性和方法聲明訪問控制;abstractfinal 必須在訪問控制之前;static 必須在訪問控制之后。

在控制結(jié)構(gòu)的保留字后必須有一個空格;在方法和函數(shù)調(diào)用之后不得有空格。

控制結(jié)構(gòu)的左花括號必須在同一行,右花括號必須在內(nèi)容后的下一行。

控制結(jié)構(gòu)的左括號之后不得有空格,右括號之前不得有空格。

1.1 示例

這個例子作為一個簡明的示例,涵蓋了一些后面提及的規(guī)則:

 $b) {
            $foo->bar($arg1);
        } else {
            BazClass::bar($arg2, $arg3);
        }
    }

    final public static function bar()
    {
        // 方法內(nèi)容
    }
}
2. 通用規(guī)則 2.1 基礎(chǔ)編碼標(biāo)準(zhǔn)

代碼必須遵循 PSR-1 規(guī)范列出的所有規(guī)則。

2.2 文件

所有 PHP 源文件必須使用 Unix LF (linefeed) 作為換行符。

所有 PHP 源文件必須以一個空行結(jié)束。

對于只包含 PHP 的文件,必須省略用于指示 PHP 段結(jié)束的 ?> 標(biāo)記。

2.3. 行

不得對行寬設(shè)置硬性限制。

對行寬的軟性限制必須是 120 個字符;超出時自動樣式檢查必須發(fā)出警告但不得產(chǎn)生錯誤。

不應(yīng)該超過 80 個字符;超過的行應(yīng)該分割為多個不超過 80 個字符的行。

非空的行不得以空白字符結(jié)束。

可以添加空行用于指出代碼塊的關(guān)聯(lián)性以提升代碼的可讀性。

一行不得包含超過一個語句。

2.4. 縮進

代碼必須使用 4 個空格用于縮進,不得使用制表符用于縮進。

只使用空格,不混用空格和制表符,能夠幫助避免查看差異、打補丁、查看歷史以及批注時潛在的問題。使用空格還讓跨行對齊時插入細粒度的子縮進更加容易。

2.5. 保留字和 True/False/Null

PHP 保留字必須使用小寫。

PHP 常量 truefalse 以及 null 必須使用小寫。

3. Namespace 和 Use 聲明

如果存在,必須namespace 聲明后加一個空行。

如果存在,所有 use 聲明必須namespace 聲明之后。

每個聲明必須要有一個 use 保留字。

use 塊之后必須有一個空行。

例如:


4. 類、屬性和方法

術(shù)語“類”指代所有的類、接口和 trait。

4.1. Extends 和 Implements

保留字 extendsimplements 必須與類名位于同一行。

類的起始花括號必須獨自一行;結(jié)束花括號必須在內(nèi)容結(jié)束后的下一行。


implements 列表可以分割為多行,這些行縮進一次。當(dāng)這樣做時,第一個條目必須在下一行,且每行必須只包含一個接口。


4.2. 屬性

必須為所有屬性聲明訪問控制。

不得使用保留字 var 聲明屬性。

一條語句不得聲明超過一個屬性。

不應(yīng)該使用單個下劃線作為 protectedprivate 屬性的訪問控制的前綴。

屬性聲明看類似下面的例子。


4.3. 方法

必須為所有方法聲明訪問控制。

不應(yīng)該使用單個下劃線作為 protectedprivate 方法的訪問控制的前綴。

方法名后不得使用空格。左花括號必須獨占一行,右花括號必須在內(nèi)容之后的行。左括號后不得緊接一個空格,右括號前不得放置一個空格。

方法的聲明類似下面的示例。請留意其中括號、逗號、空格以及花括號的位置:


4.4. 方法參數(shù)

參數(shù)列表中,每個逗號之前不得有空格,逗號之后必須跟著一個空格。

具有默認(rèn)值的方法參數(shù)必須位于參數(shù)列表的最后面。


參數(shù)列表可以分割為多行,這些行只需縮進一次。當(dāng)使用這種方式的時候,列表中的第一個參數(shù)必須位于新行,且每行必須只包含一個參數(shù)。

當(dāng)參數(shù)列表被分割為多行時,右括號和左花括號必須放在同一行,中間用一個空格隔開。


4.5. abstractfinal 以及 static

如果存在,abstractfinal 聲明必須出現(xiàn)在訪問控制聲明之前。

如果存在,static 聲明必須出現(xiàn)在訪問控制聲明之后。


4.6. 方法和函數(shù)調(diào)用

當(dāng)進行一個方法或函數(shù)調(diào)用時,在方法名或函數(shù)名與左括號之間不得用空格隔開,左括號之后不得有空格。參數(shù)列表中,每個逗號前不得有空格,每個逗號之后必須有個空格。

bar($arg1);
Foo::bar($arg2, $arg3);

參數(shù)列表可以分割為多行,這些行只需縮進一次。當(dāng)使用這種方式的時候,列表中的第一個參數(shù)必須位于新行,且每行必須只包含一個參數(shù)。

bar(
    $longArgument,
    $longerArgument,
    $muchLongerArgument
);
5. 控制結(jié)構(gòu)

與控制結(jié)構(gòu)相關(guān)的基本樣式原則如下:

控制結(jié)構(gòu)保留字之后必須有一個空格

左括號之后不得有空格

右括號之前不得有空格

右括號和左花括號直接必須有一個空格

結(jié)構(gòu)體必須縮進一次

右花括號必須在內(nèi)容后的下一行

每個結(jié)構(gòu)的內(nèi)容必須使用花括號包裹。這能讓控制結(jié)構(gòu)看起來更加標(biāo)準(zhǔn),并能減少向結(jié)構(gòu)體中加入新語句導(dǎo)致錯誤的可能性。

5.1. ifelseifelse

一個 if 結(jié)構(gòu)看起來形如下面的示例。請留意其中括號、空格以及花括號的位置;留意 elseelseif 與之前內(nèi)容的右花括號位于同一行。


應(yīng)該使用保留字 elseif 代替 else if,這樣,所有控制結(jié)構(gòu)的保留字看起來都是單個單詞。

5.2. switchcase

一個 switch 結(jié)構(gòu)看起來形如下面的示例。請留意其中括號、空格以及花括號的位置。case 語句必須相對 switch 縮進一次,保留字 break (或其它用于終止的保留字)必須case 塊的縮進層次相同。當(dāng) case 塊中穿透行為是設(shè)計需要的時候,必須添加類似 // no break 的注釋。


5.3. whiledo while

一個 while 語句看起來形如下面的示例。請留意其中括號、空格以及花括號的位置。


類似的,do while 語句看起來形如下面的示例。請留意其中括號、空格以及花括號的位置。


5.4. for

一個 for 語句看起來形如下面的示例。請留意其中括號、空格以及花括號的位置。


5.5. foreach

一個 foreach 語句看起來形如下面的示例。請留意其中括號、空格以及花括號的位置。

 $value) {
    // foreach body
}
5.6. trycatch

一個 try catch 塊看起來形如下面的示例。請留意其中括號、空格以及花括號的位置。


6. 閉包

閉包聲明中保留字 function 之后必須有一個空格,保留字 use 前后必須各有一個空格。

左花括號必須與閉包聲明同一行,右花括號必須在內(nèi)容結(jié)束后另起一行。

參數(shù)表和變量表的左括號之后不得留空格,右括號之前不得留空格。

參數(shù)表和變量表中逗號之前不得留空格,逗號之后必須留有一個空格。

閉包中具有默認(rèn)值的參數(shù)必須位于參數(shù)表的最后。

一個閉包聲明看起來形如下面的示例。請留意其中括號、逗號、空格以及花括號的位置。

$closureWithArgs = function ($arg1, $arg2) {
    // body
};

$closureWithArgsAndVars = function ($arg1, $arg2) use ($var1, $var2) {
    // body
};

參數(shù)表和變量表可以跨行書寫,后續(xù)的行縮進一次。當(dāng)這么做時,每行必須只包含一個參數(shù)或變量。

當(dāng)最后的列表(不管是參數(shù)表還是變量表)跨行書寫時,右括號和左花括號必須放在同一行,用一個空格隔開。

下面的示例分別展示了參數(shù)表和變量表跨行書寫的各種情況下應(yīng)該是怎樣的。


請注意這條格式規(guī)則也適用于閉包被直接在函數(shù)或方法調(diào)用中作為參數(shù)的情況。

bar(
    $arg1,
    function ($arg2) use ($var1) {
        // body
    },
    $arg3
);
7. 后記

這份規(guī)范有意的忽略了一些樣式和實踐準(zhǔn)則,這些內(nèi)容包括但不限于:

全局變量和全局常量的聲明

函數(shù)的聲明

操作符和賦值

跨行對齊

注釋和文檔塊

類名的前綴和后綴

最佳實踐

后續(xù)的推薦標(biāo)準(zhǔn)可以修訂和擴展這份指南來涵蓋這部分或更多其它的樣式和實踐準(zhǔn)則。

附錄 A:問卷調(diào)查

在起草這份指南是,PHP FIG 小組對其有成員項目進行了問卷調(diào)查以決定哪些實踐行為是最普遍的。原文在附錄中包含了問卷調(diào)查的情況,譯文略。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/21467.html

相關(guān)文章

  • php-psr-chinese psr規(guī)范總結(jié)

    摘要:公認(rèn)規(guī)范總結(jié)規(guī)范中文版大部分來源翻譯部分包含例子,附錄包含了一些規(guī)范的實現(xiàn)基本編碼標(biāo)準(zhǔn)編碼風(fēng)格指南日志接口規(guī)范自動加載規(guī)范規(guī)范英文版未使用草案已棄用規(guī)范原理實現(xiàn)實現(xiàn)自動加載實現(xiàn)原理資料來源與參考 PSR公認(rèn)規(guī)范總結(jié) PSR規(guī)范中文版(大部分來源google翻譯)(cn) 部分psr包含例子,附錄包含了一些規(guī)范的實現(xiàn) PSR-1:基本編碼標(biāo)準(zhǔn) PSR-2:編碼風(fēng)格指南 PSR-3:日志...

    tuomao 評論0 收藏0
  • PHP PSR規(guī)范

    摘要:前言試問現(xiàn)在的碼農(nóng)對規(guī)范了解多少。寫了幾年代碼的我,居然因不了解規(guī)范被鄙視特此來交下學(xué)費網(wǎng)上資料有很多,本文只做鏈接指引什么是是的簡稱,這個是組織制定的一套規(guī)范。 前言 試問現(xiàn)在php的碼農(nóng)對psr規(guī)范了解多少。 寫了幾年代碼的我,居然因不了解規(guī)范被鄙視!特此來交下學(xué)費 網(wǎng)上資料有很多,本文只做鏈接指引 什么是PSR PSR是PHP Standards Recommendatio...

    weknow619 評論0 收藏0
  • PHP 標(biāo)準(zhǔn)規(guī)范

    摘要:標(biāo)準(zhǔn)規(guī)范簡介是的簡寫,由組織制定的規(guī)范,是開發(fā)的實踐標(biāo)準(zhǔn)。具體標(biāo)準(zhǔn)有有了統(tǒng)一編碼風(fēng)格規(guī)范,更有利于查看和學(xué)習(xí)各個框架或類庫,不不需要每次都適應(yīng)新的編碼風(fēng)格。同時在開發(fā)團隊內(nèi)部使用統(tǒng)一的編碼規(guī)范更有利于代碼審查版本控制團隊內(nèi)部交流。 PHP 標(biāo)準(zhǔn)規(guī)范 PSR PSR 簡介 PSR 是 PHP Standard Recommendations 的簡寫,由 PHP FIG 組織制定的 PHP...

    FuisonDesign 評論0 收藏0
  • 成為一個PHP專家:缺失的環(huán)節(jié)

    摘要:為了成為一個專家,他必須先成為中級者。它非常適合于急于求成或者沒有太多技術(shù)的人,但掌握絕對無法使你成為一個專業(yè)的開發(fā)者它使用意大利面條式的編碼,教你的是不合適的設(shè)計原則。 這一篇文章是Becoming a PHP Professional系列 4 篇博文中的第 1 篇。 當(dāng)瀏覽各類與PHP相關(guān)的博客時,比如Quora上的問題,谷歌群組,簡訊和雜志,我經(jīng)常注意到技能的等級分化。問題都類...

    cooxer 評論0 收藏0
  • PSR-1 Basic Coding Standard(譯)-- 基礎(chǔ)編碼規(guī)范

    摘要:注本文算是筆者對規(guī)范翻譯學(xué)習(xí)筆記,之后會陸續(xù)翻譯剩余的規(guī)范,可能翻譯的有錯誤的地方,希望讀者能夠指正,非常感謝什么是是標(biāo)準(zhǔn)建議的簡寫,是由組織框架交互操作組織提出。的工作是尋找項目之間的共性,以及讓開發(fā)者能更好協(xié)同工作的方式。 注:本文算是筆者對PSR規(guī)范翻譯/學(xué)習(xí)筆記,之后會陸續(xù)翻譯剩余的規(guī)范,可能翻譯的有錯誤的地方,希望讀者能夠指正,非常感謝. 什么是PSR? ? ??? PSR是...

    darryrzhong 評論0 收藏0

發(fā)表評論

0條評論

K_B_Z

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<