成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

手寫PHP API框架(一)之PSR規(guī)范

本篇文章給大家?guī)砹岁P(guān)于php的相關(guān)知識,其中主要跟大家聊一聊編碼規(guī)范,也建議大家在開發(fā)中盡量遵循規(guī)范,感興趣的朋友下面一起來看一下吧,希望對大家有幫助。

創(chuàng)作初衷

  • 有沒有用煩了CURD?
  • 各種框架是不是有點(diǎn)頭大?
  • 有沒有嘗試自己設(shè)計(jì)一個(gè)框架?
  • 學(xué)了PHP語法,沒有項(xiàng)目去實(shí)戰(zhàn),夯實(shí)基礎(chǔ)

希望能幫助能讓你快速地搭建一個(gè)自己的框架,能給你的工作或者學(xué)習(xí)中帶來一定的幫助與啟發(fā)。

你能學(xué)到什么

  • PSR規(guī)范

  • composer的使用

  • 快速搭建一個(gè)API接口框架

  • Redis各種數(shù)據(jù)類型的應(yīng)用

  • 緩存應(yīng)用分析


在開發(fā)框架之前,我來介紹框架開發(fā)遵循的規(guī)范。

大多數(shù)編程語言都有自己的一套編碼規(guī)范,作為“世界上最好的語言”,PHP當(dāng)然也有自己的編碼規(guī)范。這個(gè)規(guī)范就是PHP Standard Recommendation(簡稱PSR)。

當(dāng)然,從我自己的工作中,我發(fā)現(xiàn)很多PHP程序員尤其是初級程序員,是不知道PHP是有這么一個(gè)規(guī)范的,我認(rèn)為這是不科學(xué)的。

什么是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ù)、常量等聲明,或其他會產(chǎn)生 副作用 的操作(如:生成文件輸出以及修改 .ini 配置文件等),二者只能選其一
  • 命名空間以及類必須符合 PSR 的自動加載規(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 VendorPackage;  use VendorPackage{ClassA as A, ClassB, ClassC as C}; use VendorPackageSomeNamespaceClassD as D;  use function VendorPackage{functionA, functionB, functionC};  use const VendorPackage{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     } }
登錄后復(fù)制

  • 代碼 必須 遵循 [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è)空格。 左括號 ( 后一定不能有空格。 右括號 ) 前也一定不能有空格。 右括號 ) 與開始花括號 { 間一定有一個(gè)空格。 結(jié)構(gòu)體主體一定要有一次縮進(jìn)。 結(jié)束花括號 } 一定在結(jié)構(gòu)體主體后單獨(dú)成行。復(fù)制代碼
登錄后復(fù)制

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

PSR-4 自動加載

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

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

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

     <命名空間>(<子命名空間>)*<類名>
    登錄后復(fù)制

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

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

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

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

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

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

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

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

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

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

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

例子

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

完整類名 命名空間前綴 文件基目錄 文件路徑
AcmeLogWriterFile_Writer AcmeLogWriter ./acme-log-writer/lib/ ./acme-log-writer/lib/File_Writer.php
AuraWebResponseStatus AuraWeb /path/to/aura-web/src/ /path/to/aura-web/src/Response/Status.php
SymfonyCoreRequest SymfonyCore ./vendor/Symfony/Core/ ./vendor/Symfony/Core/Request.php
ZendAcl Zend /usr/includes/Zend/ /usr/includes/Zend/Acl.php

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

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
欧美成人免费一区| 强开小婷嫩苞又嫩又紧视频韩国 | 亚洲AV无码午夜嘿嘿嘿| 亚洲成人av在线| 亚洲综合区小说区激情区| 中文字幕人妻成人综合永久 | 亚洲一区二区三区日本久久九| 一区二区狠狠色丁香久久婷婷| 14萝自慰专用网站| WWW久久久天天COM| 国产边做饭边被躁在线小说| 国语对白国产成人AⅤ片| 久久久久久精品免费免费英国| 男女无遮挡高清视频免费看| 日本高清XXXXXXXXXX| 婷婷五月18永久免费网站| 亚洲成色WWW久久网站夜月| 一区二区操逼视频| 锕锕锕锕锕锕~好痛APP下载 | 熟女高潮精品一区二区绯乐| 亚洲AV无码丰满尖叫高潮| 又大又粗又爽ΑA级毛片| 凹凸视频免费在线| 国产区精品一区二区不卡中文| 久久久无码精品午夜| 人人妻人人爽人人狠狠| 亚洲AV成人无码精品网站色欲| 又大又粗又爽ΑA级毛片 | 日韩精品人妻中文字幕有码 | 色一情一乱一乱一区91Av| 亚洲S色大片在线观看| 2018最新国产好看的国产| 粉嫩小泬无遮挡久久久久久小说 | 亚洲成成熟女人专区| 337P粉嫩日本欧洲亚洲大胆| 国产Ⅴ亚洲V天堂A无码| 精品无码人妻夜人多侵犯18| 强行糟蹋人妻HD中文字幕| 性一交一乱一性一在线观看| 中文字幕亚洲精品无码| 国产粉嫩嫩00在线正在播放| 老狼一区忘忧草欢迎您大豆| 少妇爆乳无码专区| 亚洲香蕉一本大道在线| 成人免费视频CAOPORN| 互换人妻ⅩXXBBBB| 人妻少妇无码专视频在线| 亚洲变态另类调教久久久| CHINESE熟女熟妇1乱| 国内国精产品一二三区传媒| 欧美人与性口牲恔配视频| 亚洲AV极品熟妇一品二品三品 | 欧洲美女黑人粗性暴交视频| 亚洲AV无码专区亚洲AV漫画| А√最新版地址在线天堂| 国精品无码人妻一区二区三区| 女人18片毛片60分钟完整版| 亚洲AV区无码字幕中文色| JEALOUSVUE成熟| 精品久久久久久中文字幕大豆网| 人妻少妇精品无码专区二区| 亚洲精品乱码久久久久久自慰| 被黑人巨茎日出白浆的少妇| 警察被两个混混脱裤玩J视频| 日日狠狠久久偷偷色综合96蜜桃| 亚洲性日韩精品一区二区三区| 国产95在线 | 亚洲| 免费真人视频APP| 亚洲AV无码一区二区三区天堂古 | 熟妇人妻系列AV无码一区二区| 曰曰摸天天添天天湿| 国产乱AⅤ一区二区三区| 欧美性极品少妇精品网站| 亚洲乱人伦中文字幕无码| 国产AV剧情片二区| 欧美内射AAAAAAXXXXX| 亚洲精品卡一卡2卡3卡4卡| 国产AV无码专区亚洲AV麻豆| 女儿儿媳陪自己玩的心情说说| 亚洲产国偷v产偷v自拍浪潮AV| 成熟交BGMBGMBGM| 免费一对一刺激互动聊天软件| 亚洲成AV人片在线观看不卡| 丰满人妻妓熟妇又伦精品软件| 民工把我奶头掏出来了怎么办| 亚洲国产AV无码一区二区三区| 俄罗斯人又更又租| 欧美黑人暴力深喉囗交| 亚洲综合无码无在线观看| 国产中文成人精品久久久| 色欲av无码一区二区人妻精油| 2023年新番肉食系| 久久久精品无码中文天美 | 双乳被一左一右的吸着| HEYZO中文字幕无码| 麻豆WWW传媒入口| 亚洲国产另类久久久精品| 国产精华液一区二区区别大吗| 人人妻人人爽人人澡欧美二区| 中文字幕人妻成人综合永久| 久久精品成人免费国产片| 亚洲AV无码一区二区三区乱码4| 国产黑色丝袜在线视频| 日韩精品无码人成视频手机| A级毛片毛片免费观看丝瓜| 两根大肉大捧一进一出好爽视频 | 久久久久久久精品成人热小说| 亚州AV无码人妻一区二区三区| 贵为皇后却被用来犒赏三军 | 顶级RAPPER潮水日本| 人妻妺妺窝人体色WWW仙踪林 | 国产日韩AV无码免费一区二区三| 天美传媒剧国产MV在线看| 粉嫩AV一区二区精品爆乳| 日韩欧美群交P片內射中文| 把腿张开老子cao烂你n视频| 欧美喷潮久久久XXXXX| 97久久精品人人爽人人爽蜜臀| 麻豆AV无码精品一区二区| 尤物TV国产精品看片在线| 久久天天躁夜夜躁狠狠2018| 亚洲一区精品人人爽人人躁 | 亚洲中文字幕乱码AV波多JI| 精品国产一区二区三区香蕉| 亚洲国产午夜无码精品小说 | 国产女人天天春夜夜春| 无码人妻少妇久久中文字幕蜜桃 | 丰满的女房东6剧情| 日韩无码视频一区二区| 大胆人体艺术视频| 色哟哟网站在线观看入口| 疯狂做受XXXX高潮视频免费 | 国产成人涩涩涩视频在线观看 | 色综合伊人色综合网站 | 久99久精品免费视频热| 亚洲线精品一区二区三区影音先锋| 久久精品无码一区二区无码| 一级伦奷片高潮无码看了5| 乱码午夜-极品国产内射| 2021久久精品国产99国产精| 欧美猛片BBBBBⅩXXXX| 被添高潮爱爱免费视频| 乳揉みま痴汉电车中文字幕| 国产边做边吃奶AⅤ视频免费| 无码少妇一区二区三区浪潮av | 男人操女人视频图片日韩| AV无码精品一区二区三区| 日本猛少妇色XXXXX猛叫小说| 丰满少妇被猛烈进出69影院| 无码国内精品人妻少妇蜜桃视频| 国产偷国产偷亚洲清高APP| 亚洲第一无码AV播放器下载| 久久久久精品国产三级美国美女| 中文字幕人妻成人综合永久| 人妻丰满熟妇岳av无码区HD| 国产AV无码专区亚洲AV桃花庵| 亚洲AⅤ无码天堂在线观看| 久久精品99久久久久久蜜芽TV| 一二三四视频社区在线播放中国| 男人用嘴添女人下身免费视频| 锕锕锕锕锕锕~好湿WWW| 婷婷妺妺窝人体色www久久| 饥渴人妻被快递员玩弄的视频| 影音先锋人妻啪啪AV资源网站| 欧美日韩国产成人高清视频| 国产AV激情无码久久| 亚洲AV优女天堂熟女| 狂野欧美性猛XXXX乱大交| JAPANESEHD熟女熟妇| 玩肥熟老妇BBW视频| 精品美女AⅤ国产女教师蜜臀| 综合人妻久久一区二区精品| 日韩AV一区二区三区| 国产亚洲精久久久久久无码777| 一本一道AV无码中文字幕| 欧洲精品VA无码一区二区三区| 国产成人无码精品久久久免费| 亚洲丰满性熟妇PⅩXXOO| 内射人妻无套中出无码| 公交车上摸到花蒂进去了视频| 亚洲第一无码XXXXXX| 欧美〇〇无码黑人大战野结衣| 国产爆乳成人AV在线播放| 亚洲熟妇真实自拍另类| 欧洲无线一线二线三W955| 国产人成视频在线观看| 中国又粗又大XXXXBBBB| 色欲蜜桃AV无码中文字幕| 精品国产一区二区三区国产区| 99久久99久久精品国产片| 无码人妻丰满熟妇区五十路在线 | 亚洲AV无码成人专区| 内射极品少妇一区二区AV| 国产成人无码精品XXXX| 曰本伦理漂亮妈妈| 熟妇无码乱子成人精品| 老狼一区忘忧草欢迎您大豆男男 | 亚洲精品成人福利网站| 人妻无码精品久久亚瑟影视| 狠狠综合久久狠狠88亚洲|