91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP API框架中PSR規范有哪些

發布時間:2023-02-10 13:43:17 來源:億速云 閱讀:130 作者:iii 欄目:編程語言

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

什么是PSR?

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

組織成員制定規范,并且落實在自己的項目中,雖然不是官方組織,但也代表了大部分PHP社區項目,如CakePHP,Composer,Drupal,PEAR,Slim,Yii framework,Zend Framework等。并且有越來越多的項目加入并遵循此標準。

PSR項目的目的在于:通過框架作者或者框架的代表之間討論,以最低程度的限制,制定一個協作標準,各個框架遵循統一的編碼規范,讓工程師一起更好協同工作。

截止目前,已經官網已有20條列出,除去起草中和舍棄的,有以下13條。

PHP API框架中PSR規范有哪些

我們不妨來看看這些規范:

PSR-1 基礎編碼規范

  • PHP 代碼文件必須以 <?php 或 <?= 標簽開始

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

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

  • 命名空間以及類必須符合 PSR 的自動加載規范PSR-4

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

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

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

PSR-12 代碼風格規范

PSR-12的規范很細致,包含了聲明、命名空間、類及繼承以及控制結構等說明。

我們先來看一個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] 中的編碼規范

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

  • 所有PHP文件必須以一個空白行作為結束;

  • 純PHP代碼文件必須省略最后的 ?> 結束標簽

  • 每行的字符數 應該軟性保持在 80 個之內,理論上 一定不可 多于 120 個,但一定不可有硬性限制;非空行后一定不能有多余的空格符;

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

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

  • 代碼必須使用4個空格符的縮進,一定不能用 tab鍵

  • PHP所有關鍵字必須全部小寫

  • 控制結構的基本規范如下:

控制結構關鍵詞后必須有一個空格。
左括號 ( 后一定不能有空格。
右括號 ) 前也一定不能有空格。
右括號 ) 與開始花括號 { 間一定有一個空格。
結構體主體一定要有一次縮進。
結束花括號 } 一定在結構體主體后單獨成行。復制代碼

代碼風格規范內容很多,這里就不一一說明了,大家可自行閱讀

PSR-4 自動加載

關于由文件路徑 自動載入 對應類的相關規范, 本規范是可互操作的,可以作為任一自動載入規范的補充,其中包括 PSR-0,此外, 本 PSR 還包括自動載入的類對應的文件存放路徑規范。

  • 此處的“類”泛指所有的class類、接口、traits可復用代碼塊以及其它類似結構。

  • 一個完整的類名需具有以下結構:


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


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

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

    • 完整的類名必須有一個最終的類名;

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

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

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

  • 當根據完整的類名載入相應的文件……

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

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

    • 末尾的類名必須與對應的以 .php 為后綴的文件同名。

    • 自動加載器(autoloader)的實現一定不能拋出異常、一定不能觸發任一級別的錯誤信息以及不應該有返回值。

例子

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

完整類名命名空間前綴文件基目錄文件路徑
\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

暫且只介紹這比較常用的三個規范。

關于“PHP API框架中PSR規范有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

芮城县| 淮阳县| 思茅市| 共和县| 涿州市| 金平| 玛纳斯县| 凉山| 邹平县| 鹤岗市| 长阳| 泸州市| 黑河市| 牟定县| 吉水县| 墨竹工卡县| 长宁区| 镇安县| 南昌市| 新乡县| 德昌县| 连南| 积石山| 永康市| 洛隆县| 禄劝| 双辽市| 旌德县| 金乡县| 屯昌县| 伊宁市| 荃湾区| 稻城县| 徐闻县| 塔河县| 静乐县| 同德县| 枣庄市| 松溪县| 湟中县| 岑巩县|