摘要:今天這篇分享將簡(jiǎn)單地梳理一下規(guī)范,并介紹一個(gè)代碼檢查工具,結(jié)合以及進(jìn)行實(shí)踐。目前流行的一些規(guī)范是的簡(jiǎn)寫,由組織制定的規(guī)范,是開發(fā)的實(shí)踐標(biāo)準(zhǔn)。目前已表決通過了套標(biāo)準(zhǔn),已經(jīng)得到大部分框架的支持和認(rèn)可。
> 作為一個(gè)新手,寫出規(guī)范的代碼也是一門必修課,除了閱讀相應(yīng)的代碼規(guī)范文檔之外,充分利用相關(guān)的工具能使得進(jìn)階之路事半功倍。今天這篇分享將簡(jiǎn)單地梳理一下 PHP 規(guī)范,并介紹一個(gè)代碼檢查工具 Code Sniffer,結(jié)合 PHPStorm 以及 GIT 進(jìn)行實(shí)踐。
PHP 規(guī)范為什么需要統(tǒng)一代碼規(guī)范?
PHP 社區(qū)百花齊放,擁有大量的函數(shù)庫(kù)、框架和組件。PHP 開發(fā)者通常會(huì)在自己的項(xiàng)目中使用若干個(gè)外部庫(kù),因此 PHP 代碼遵循(盡可能接近)同一個(gè)代碼風(fēng)格就非常重要,這讓開發(fā)者可以輕松地將多個(gè)代碼庫(kù)整合到自己的項(xiàng)目中。
目前流行的一些規(guī)范:
PSR
PSR 是 PHP Standard Recommendations 的簡(jiǎn)寫,由 PHP FIG 組織制定的 PHP 規(guī)范,是 PHP 開發(fā)的實(shí)踐標(biāo)準(zhǔn)。
PHP FIG,F(xiàn)IG 是 Framework Interoperability Group(框架可互用性小組)的縮寫,由幾位開源框架的開發(fā)者成立于 2009 年,從那開始也選取了很多其他成員進(jìn)來(包括但不限于 Laravel, Joomla, Drupal, Composer, Phalcon, Slim, Symfony, Zend Framework 等),雖然不是「官方」組織,但也代表了大部分的 PHP 社區(qū)。
項(xiàng)目的目的在于:通過框架作者或者框架的代表之間討論,以最低程度的限制,制定一個(gè)協(xié)作標(biāo)準(zhǔn),各個(gè)框架遵循統(tǒng)一的編碼規(guī)范,避免各家自行發(fā)展的風(fēng)格阻礙了 PHP 的發(fā)展,解決這個(gè)程序設(shè)計(jì)師由來已久的困擾。
目前已表決通過了 6 套標(biāo)準(zhǔn),已經(jīng)得到大部分 PHP 框架的支持和認(rèn)可。
詳細(xì)介紹請(qǐng)參考官方說明:
中文文檔
官方網(wǎng)站
PEAR
The PEAR Coding Standards apply to code that is part of the official PEAR distribution. Coding standards often abbreviated as CS among developers and they aim to keep code consistent to be easily readable and maintainable by most of PEAR folks.
參考官方說明
Zend
Zend Framework 使用的代碼規(guī)范。
參考官方說明
Code Sniffer官方網(wǎng)站:https://github.com/squizlabs/PHP_CodeSniffer
PHP_CodeSniffer is a set of two PHP scripts; the main phpcs script that tokenizes PHP, JavaScript and CSS files to detect violations of a defined coding standard, and a second phpcbf script to automatically correct coding standard violations. PHP_CodeSniffer is an essential development tool that ensures your code remains clean and consistent.
簡(jiǎn)單來說,就是兩個(gè)小工具,
phpcs (PHP Code Standard),用來檢查代碼規(guī)范
phpcbf (PHP Code Beautifier and Fixer),用來自動(dòng)修復(fù)代碼
安裝 Code Sniffer參考官方文檔
使用 Code Sniffer執(zhí)行 phpcs 檢查代碼規(guī)范
$ phpcs /path/to/code/myfile.php FILE: /path/to/code/myfile.php -------------------------------------------------------------------------------- FOUND 5 ERRORS AFFECTING 4 LINES -------------------------------------------------------------------------------- 2 | ERROR | [ ] Missing file doc comment 3 | ERROR | [x] TRUE, FALSE and NULL must be lowercase; expected "false" but | | found "FALSE" 5 | ERROR | [x] Line indented incorrectly; expected at least 4 spaces, found 1 8 | ERROR | [ ] Missing function doc comment 8 | ERROR | [ ] Opening brace should be on a new line -------------------------------------------------------------------------------- PHPCBF CAN FIX THE 2 MARKED SNIFF VIOLATIONS AUTOMATICALLY --------------------------------------------------------------------------------
Code-Sniffer 默認(rèn)使用 PEAR 代碼規(guī)范。可以使用 --standard=xxx 指定。
$ phpcs --standard=PSR2 /path/to/code/myfile.php
或者修改默認(rèn)配置
$ phpcs --config-set default_standard Squiz
執(zhí)行 phpcbs 修復(fù)代碼
$ phpcbf /path/to/code Processing init.php [PHP => 7875 tokens in 960 lines]... DONE in 274ms (12 fixable violations) => Fixing file: 0/12 violations remaining [made 3 passes]... DONE in 412ms Processing config.php [PHP => 8009 tokens in 957 lines]... DONE in 421ms (155 fixable violations) => Fixing file: 0/155 violations remaining [made 7 passes]... DONE in 937ms Patched 2 files Time: 2.55 secs, Memory: 25.00Mb
更多功能,參考官方文檔
與 PHP Storm 集成將 Code Sniffer 與 PHP Storm 集成,可以使 IDE 實(shí)時(shí)顯示代碼的規(guī)范情況,提醒開發(fā)人員修改代碼,長(zhǎng)期使用,可以讓開發(fā)人員養(yǎng)成非常規(guī)范的代碼習(xí)慣。
如何配置?
為 PHPStorm 配置 Code Sniffer 路徑:
![code-sniffer](http://imgur.com/X4rIc0e.png) ![code-sniffer](http://imgur.com/TdqQVfz.png)
設(shè)置 Inspections
選擇合適的 Coding Standard ![](http://imgur.com/hLmHbZo.png)利用 GIT Hook 強(qiáng)制代碼檢查
使用 GIT 的 Pre-Commit Hook,可以在代碼被提交之前,強(qiáng)制調(diào)用 Code Sniffer 進(jìn)行代碼檢查,如果不符合規(guī)范,將阻止用戶提交代碼。
在項(xiàng)目的 .git/hooks 建立 pre-commit 文件
寫入代碼:
[Pre-Commit Gist](https://gist.githubusercontent.com/yangzhyo/6dad52e862c5efa368c992efc52e1fb9/raw/dec18f55ddfdf6eeb6d659a19398ec2d106fface/pre-commit.php)
試試看:)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/25897.html
摘要:本文目的是通過自己寫的一個(gè)的簡(jiǎn)單的庫(kù)花密密碼生成工具,來學(xué)習(xí)我認(rèn)為的庫(kù)開發(fā)的一些規(guī)范,以及上持續(xù)構(gòu)建你的項(xiàng)目的一些方法。給自己的項(xiàng)目開啟持續(xù)構(gòu)建。包發(fā)布以及當(dāng)你的代碼完成后,測(cè)試完成后。 本文目的是通過自己寫的一個(gè)php的簡(jiǎn)單的庫(kù)(花密密碼生成工具), 來學(xué)習(xí)我認(rèn)為的php庫(kù)開發(fā)的一些規(guī)范,以及github上持續(xù)構(gòu)建你的項(xiàng)目的一些方法。其實(shí)是為了顯示下邊一系列的的徽章 showImg(...
摘要:創(chuàng)建帳號(hào)提供的是持續(xù)集成服務(wù),簡(jiǎn)稱。在這里引入的原因是我們的項(xiàng)目需要使用服務(wù)進(jìn)行持續(xù)集成和測(cè)試,當(dāng)然你也可以替換成別的單元測(cè)試工具。創(chuàng)建單元測(cè)試用例是單元測(cè)試類庫(kù)家族中的一員,使用的一個(gè)主要目的是為我們的模塊創(chuàng)建單元測(cè)試用例。 本文首發(fā)于 Travis CI 持續(xù)集成服務(wù)構(gòu)建 Composer 類庫(kù)簡(jiǎn)明教程,轉(zhuǎn)載請(qǐng)注明出處! 在項(xiàng)目開發(fā)過程中,編碼工作只是軟件開發(fā)整個(gè)過程中的一小部分環(huán)...
摘要:所以,是幫助您創(chuàng)建您的項(xiàng)目的測(cè)試框架,單元測(cè)試。行為驅(qū)動(dòng)開發(fā)是一個(gè)來自測(cè)試驅(qū)動(dòng)開發(fā)的開發(fā)過程。這種語(yǔ)言被稱為,是用來描述被測(cè)試的預(yù)期的行為。代碼將被測(cè)試并且沒有異常。這些標(biāo)準(zhǔn)提出了現(xiàn)代編碼風(fēng)格。 本文來自medium----原文鏈接; 歡迎作客我們的php&Laravel學(xué)習(xí)群:109256050 你需要開始使用測(cè)試 這是我每天對(duì)自己說的話。像很多人一樣,我不會(huì)像TDD所建議的那樣測(cè)試...
摘要:為什么我們要培養(yǎng)自己的編碼規(guī)范我們寫代碼的時(shí)候,一個(gè)好的編碼規(guī)范,對(duì)我們來說能夠起到很多意向不到的效果。至少會(huì)有一下的好處提高我們的編碼效率。 為什么我們要培養(yǎng)自己的編碼規(guī)范? 我們寫代碼的時(shí)候,一個(gè)好的編碼規(guī)范,對(duì)我們來說能夠起到很多意向不到的效果。至少會(huì)有一下的好處:1、提高我們的編碼效率。整齊劃一的代碼方便我們進(jìn)行復(fù)制粘貼嘛!2、提高代碼的可讀性。3、顯示我們專業(yè)。別人看到了我們...
摘要:標(biāo)準(zhǔn)規(guī)范簡(jiǎn)介是的簡(jiǎn)寫,由組織制定的規(guī)范,是開發(fā)的實(shí)踐標(biāo)準(zhǔn)。具體標(biāo)準(zhǔn)有有了統(tǒng)一編碼風(fēng)格規(guī)范,更有利于查看和學(xué)習(xí)各個(gè)框架或類庫(kù),不不需要每次都適應(yīng)新的編碼風(fēng)格。同時(shí)在開發(fā)團(tuán)隊(duì)內(nèi)部使用統(tǒng)一的編碼規(guī)范更有利于代碼審查版本控制團(tuán)隊(duì)內(nèi)部交流。 PHP 標(biāo)準(zhǔn)規(guī)范 PSR PSR 簡(jiǎn)介 PSR 是 PHP Standard Recommendations 的簡(jiǎn)寫,由 PHP FIG 組織制定的 PHP...
閱讀 2804·2023-04-25 18:46
閱讀 695·2021-11-19 09:40
閱讀 2062·2021-09-28 09:36
閱讀 3373·2021-09-10 11:11
閱讀 3453·2019-08-30 15:55
閱讀 1790·2019-08-30 15:54
閱讀 2588·2019-08-29 16:16
閱讀 3535·2019-08-29 15:08