中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

PHPAPI框架中PSR規(guī)范有哪些

這篇文章主要介紹“PHP API框架中PSR規(guī)范有哪些”的相關(guān)知識(shí),小編通過實(shí)際案例向大家展示操作過程,操作方法簡單快捷,實(shí)用性強(qiáng),希望這篇“PHP API框架中PSR規(guī)范有哪些”文章能幫助大家解決問題。

創(chuàng)新互聯(lián)專注于桐廬企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站建設(shè)。桐廬網(wǎng)站建設(shè)公司,為桐廬等地區(qū)提供建站服務(wù)。全流程按需定制網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

什么是PSR?

介紹PSR之前需要介紹一下制定此規(guī)范的組織-----PHP-FIG,全稱是PHP Framework Interoperability。

組織成員制定規(guī)范,并且落實(shí)在自己的項(xiàng)目中,雖然不是官方組織,但也代表了大部分PHP社區(qū)項(xiàng)目,如CakePHP,Composer,Drupal,PEAR,Slim,Yii framework,Zend Framework等。并且有越來越多的項(xiàng)目加入并遵循此標(biāo)準(zhǔn)。

PSR項(xiàng)目的目的在于:通過框架作者或者框架的代表之間討論,以最低程度的限制,制定一個(gè)協(xié)作標(biāo)準(zhǔn),各個(gè)框架遵循統(tǒng)一的編碼規(guī)范,讓工程師一起更好協(xié)同工作。

截止目前,已經(jīng)官網(wǎng)已有20條列出,除去起草中和舍棄的,有以下13條。

PHP API框架中PSR規(guī)范有哪些

我們不妨來看看這些規(guī)范:

PSR-1 基礎(chǔ)編碼規(guī)范

  • PHP 代碼文件必須以 <?php 或 <?= 標(biāo)簽開始

  • PHP 代碼文件必須以不帶BOM的UTF-8編碼

  • PHP 代碼中 應(yīng)該 只定義類、函數(shù)、常量等聲明,或其他會(huì)產(chǎn)生 副作用 的操作(如:生成文件輸出以及修改 .ini 配置文件等),二者只能選其一

  • 命名空間以及類必須符合 PSR 的自動(dòng)加載規(guī)范PSR-4

  • 類的命名必須遵循 StudlyCaps 式大寫開頭的駝峰命名規(guī)范

  • 類中的常量所有字母都必須 大寫,單詞間用下劃線分隔

  • 方法名稱必須符合 camelCase 式的小寫開頭駝峰命名規(guī)范

PSR-12 代碼風(fēng)格規(guī)范

PSR-12的規(guī)范很細(xì)致,包含了聲明、命名空間、類及繼承以及控制結(jié)構(gòu)等說明。

我們先來看一個(gè)demo:

<?php

declare(strict_types=1);

namespace Vendor\Package;

use Vendor\Package\{ClassA as A, ClassB, ClassC as C};
use Vendor\Package\SomeNamespace\ClassD as D;

use function Vendor\Package\{functionA, functionB, functionC};

use const Vendor\Package\{ConstantA, ConstantB, ConstantC};

class Foo extends Bar implements FooInterface
{
    public function sampleFunction(int $a, int $b = null): array
    {
        if ($a === $b) {
            bar();
        } elseif ($a > $b) {
            $foo->bar($arg1);
        } else {
            BazClass::bar($arg2, $arg3);
        }
    }

    final public static function bar()
    {
        // method body
    }
}

  • 代碼 必須 遵循 [PSR-1] 中的編碼規(guī)范

  • 所有PHP文件必須使用Unix LF (linefeed)作為行的結(jié)束符;

  • 所有PHP文件必須以一個(gè)空白行作為結(jié)束;

  • 純PHP代碼文件必須省略最后的 ?> 結(jié)束標(biāo)簽

  • 每行的字符數(shù) 應(yīng)該軟性保持在 80 個(gè)之內(nèi),理論上 一定不可 多于 120 個(gè),但一定不可有硬性限制;非空行后一定不能有多余的空格符;

  • 空行可以使得閱讀代碼更加方便以及有助于代碼的分塊。

  • 每行一定不能存在多于一條語句

  • 代碼必須使用4個(gè)空格符的縮進(jìn),一定不能用 tab鍵

  • PHP所有關(guān)鍵字必須全部小寫

  • 控制結(jié)構(gòu)的基本規(guī)范如下:

控制結(jié)構(gòu)關(guān)鍵詞后必須有一個(gè)空格。
左括號(hào) ( 后一定不能有空格。
右括號(hào) ) 前也一定不能有空格。
右括號(hào) ) 與開始花括號(hào) { 間一定有一個(gè)空格。
結(jié)構(gòu)體主體一定要有一次縮進(jìn)。
結(jié)束花括號(hào) } 一定在結(jié)構(gòu)體主體后單獨(dú)成行。復(fù)制代碼

代碼風(fēng)格規(guī)范內(nèi)容很多,這里就不一一說明了,大家可自行閱讀

PSR-4 自動(dòng)加載

關(guān)于由文件路徑 自動(dòng)載入 對(duì)應(yīng)類的相關(guān)規(guī)范, 本規(guī)范是可互操作的,可以作為任一自動(dòng)載入規(guī)范的補(bǔ)充,其中包括 PSR-0,此外, 本 PSR 還包括自動(dòng)載入的類對(duì)應(yīng)的文件存放路徑規(guī)范。

  • 此處的“類”泛指所有的class類、接口、traits可復(fù)用代碼塊以及其它類似結(jié)構(gòu)。

  • 一個(gè)完整的類名需具有以下結(jié)構(gòu):

     \<命名空間>(\<子命名空間>)*\<類名>

    • 完整的類名必須要有一個(gè)頂級(jí)命名空間,被稱為 "vendor namespace";

    • 完整的類名可以有一個(gè)或多個(gè)子命名空間;

    • 完整的類名必須有一個(gè)最終的類名;

    • 完整的類名中任意一部分中的下劃線都是沒有特殊含義的;

    • 完整的類名可以由任意大小寫字母組成;

    • 所有類名都必須是大小寫敏感的。

  • 當(dāng)根據(jù)完整的類名載入相應(yīng)的文件……

    • 完整的類名中,去掉最前面的命名空間分隔符,前面連續(xù)的一個(gè)或多個(gè)命名空間和子命名空間,作為“命名空間前綴”,其必須與至少一個(gè)“文件基目錄”相對(duì)應(yīng);

    • 緊接命名空間前綴后的子命名空間必須與相應(yīng)的”文件基目錄“相匹配,其中的命名空間分隔符將作為目錄分隔符。

    • 末尾的類名必須與對(duì)應(yīng)的以 .php 為后綴的文件同名。

    • 自動(dòng)加載器(autoloader)的實(shí)現(xiàn)一定不能拋出異常、一定不能觸發(fā)任一級(jí)別的錯(cuò)誤信息以及不應(yīng)該有返回值。

例子

下表展示了符合規(guī)范完整類名、命名空間前綴和文件基目錄所對(duì)應(yīng)的文件路徑。

完整類名命名空間前綴文件基目錄文件路徑
\Acme\Log\Writer\File_WriterAcme\Log\Writer./acme-log-writer/lib/./acme-log-writer/lib/File_Writer.php
\Aura\Web\Response\StatusAura\Web/path/to/aura-web/src//path/to/aura-web/src/Response/Status.php
\Symfony\Core\RequestSymfony\Core./vendor/Symfony/Core/./vendor/Symfony/Core/Request.php
\Zend\AclZend/usr/includes/Zend//usr/includes/Zend/Acl.php

暫且只介紹這比較常用的三個(gè)規(guī)范。

關(guān)于“PHP API框架中PSR規(guī)范有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。

網(wǎng)頁名稱:PHPAPI框架中PSR規(guī)范有哪些
網(wǎng)站網(wǎng)址:http://www.rwnh.cn/article48/jdjhep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、微信小程序、App開發(fā)、靜態(tài)網(wǎng)站、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管
文水县| 屯昌县| 德江县| 长春市| 台东县| 高安市| 正镶白旗| 东阿县| 法库县| 吴忠市| 大关县| 岳池县| 耒阳市| 义乌市| 长阳| 治县。| 称多县| 临高县| 安多县| 和静县| 彩票| 富顺县| 灯塔市| 大同县| 卢湾区| 青神县| 正定县| 化州市| 肥乡县| 永寿县| 新乡市| 手游| 呼玛县| 黔东| 永仁县| 瓦房店市| 泰和县| 张家港市| 双峰县| 长乐市| 中牟县|