亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

這就是現(xiàn)代php該有的樣子(二)

fevin / 919人閱讀

摘要:所以,是幫助您創(chuàng)建您的項(xiàng)目的測試框架,單元測試。行為驅(qū)動開發(fā)是一個(gè)來自測試驅(qū)動開發(fā)的開發(fā)過程。這種語言被稱為,是用來描述被測試的預(yù)期的行為。代碼將被測試并且沒有異常。這些標(biāo)準(zhǔn)提出了現(xiàn)代編碼風(fēng)格。

本文來自medium----原文鏈接; 歡迎作客我們的php&Laravel學(xué)習(xí)群:109256050
你需要開始使用測試

這是我每天對自己說的話。像很多人一樣,我不會像TDD所建議的那樣測試我的代碼。我現(xiàn)在在使用測試,在過去的半年里一直這樣做,前面還有很長的路要走。

我是在處理復(fù)雜的遺留項(xiàng)目時(shí)決定學(xué)習(xí)測試。代碼是如此的脆弱和僵硬,以至于一旦我們添加一些代碼就會破壞它。新的特征?實(shí)現(xiàn)和破壞某事!修復(fù)錯誤?新建另一個(gè)。

這是一個(gè)大問題,并讓我開始嘗試測試。

第一個(gè)工具是PHPUnit。如官方網(wǎng)站所述

PHPUnit是PHP的面向程序員的測試框架。

這是單元測試框架xUnit架構(gòu)實(shí)例。

所以,PHPUnit是幫助您創(chuàng)建您的項(xiàng)目的測試框架,單元測試。它提供了幾個(gè)函數(shù)來測試代碼的結(jié)果,并生成與這些測試結(jié)果相同的良好輸出。

自從我開始思考測試、閱讀、和于人交談測試,我發(fā)現(xiàn)了另一個(gè)偉大的工具,它是對以前那些單元的測試工作的補(bǔ)充,它就是Behat,這是一個(gè)BDD的PHP框架。

BDD(行為驅(qū)動開發(fā))是一個(gè)來自TDD(測試驅(qū)動開發(fā))的開發(fā)過程。這些縮寫詞現(xiàn)在并不重要,重要的是你可以使用更自然的語言來說明你的測試,這種語言對于非技術(shù)人員也可以理解它。

這種語言被稱為Gherkin,是用來描述被測試的預(yù)期的行為。使用Gherkin看起來像這樣

在這些描述背后,每當(dāng)描述于phpDoc中的指定的方法有正則模式匹配相應(yīng)的php代碼就會被調(diào)用,通過SDK、應(yīng)用程序或Web系統(tǒng),這些代碼實(shí)現(xiàn)了這些步驟,模擬真實(shí)的用戶將做的

使用Behat工作是如此順利。在一切正確配置之后,您開始編寫測試一個(gè)特性的所有可能場景。一旦你運(yùn)行behat,它給你所有你應(yīng)該添加到您的PHP環(huán)境類的方法模版以便實(shí)施場景的每一步

之后,您開始編寫每一步的實(shí)際代碼,并繼續(xù)重復(fù)這個(gè)循環(huán)。

實(shí)現(xiàn)一個(gè)步驟的php代碼

運(yùn)行測試

如果運(yùn)行正常,繼續(xù)實(shí)現(xiàn)下一步的php代碼

如果有異常,修復(fù)它

在經(jīng)歷一個(gè)半小時(shí)的配置和閱讀文檔后,你可以開始使用Behat,到最后你看到的都是php代碼然后你就已經(jīng)知道了怎么編寫它

持續(xù)集成

持續(xù)集成(CI)是一個(gè)過程——一種做某事的方法,而這一點(diǎn)對于我們的軟件工程師來說,就是創(chuàng)造軟件。

簡單地說,它是將小代碼塊(也許每天幾次)不斷的整合到代碼庫中的行為。代碼將被測試并且沒有異常。CI幫助您自動化應(yīng)用程序的構(gòu)建、測試和部署。

通過幾次點(diǎn)擊,你可以通過Travis CI集成你的GitHub項(xiàng)目,每次推送到倉庫后會運(yùn)行你以寫好的PHPUnit和Behat測試,這些測試告訴你最后實(shí)現(xiàn)的特點(diǎn)是否準(zhǔn)備好,是否要合并。除此之外,您還可以使用Travis CI將代碼部署到生產(chǎn)環(huán)境和暫存。

通過一個(gè)被良好規(guī)范的程序?qū)崿F(xiàn)一個(gè)良好的工作流程是極好的,Travis CI可以幫助你做這項(xiàng)工作。遵循這個(gè)好的開始,發(fā)現(xiàn)對軟件開發(fā)過程的思考是多么有趣,而不僅僅是代碼本身。

遵循PSR-1 和 PSR-2

如果你以前不知道PSR是什么,那么現(xiàn)在你應(yīng)該去了解了。實(shí)際上PSR代表PHP Standard Recommendation(PHP規(guī)范推薦),PHP-FIG建議使用它們。PHP—FIG是一個(gè)成員來自最大的PHP項(xiàng)目、框架和CMS系統(tǒng)的一個(gè)組織,它致力于對語言的未來、生態(tài)系統(tǒng)的思考和討論應(yīng)被遵循的PHP規(guī)范

很長一段時(shí)間以來PHP都沒有編碼風(fēng)格。我沒有那么老,但每次我看到別人的項(xiàng)目或庫時(shí),它們的風(fēng)格都不同。有時(shí)把括號放在一個(gè)位置,有時(shí)把它放在下一行,用不同的方法來處理長長的一行代碼,還有其他風(fēng)格和喜好的組合。真是一團(tuán)糟。

PHP—FIG做許多其他的工作,但提出一個(gè)統(tǒng)一的代碼,他們說:“讓我們停止操心代碼風(fēng)格,讓我們每個(gè)人都遵循同一個(gè)標(biāo)準(zhǔn),并開始思考創(chuàng)造偉大的軟件”?,F(xiàn)在,每當(dāng)你查看某人的代碼時(shí),你只會操心它是如何工作的,而不是研究格式、結(jié)構(gòu)。

在文章的最后,一共有9種被接受的PSRs為解決常見問題的推薦解決方案。但如果你不知道這些標(biāo)準(zhǔn)的話,以PSR-1和psr-2作為起點(diǎn)。

這些標(biāo)準(zhǔn)提出了現(xiàn)代PHP編碼風(fēng)格。請務(wù)必在開始使用之前閱讀它們。不要認(rèn)為在編寫代碼時(shí)你會記住所有的代碼,這是一個(gè)過程,但為了讓你確定你使用的規(guī)范,有一些工具可以幫助你完成它。
PHP CodeSniffer是一種工具,你可以在Packagist上找到它,使用Composer安裝它。我不認(rèn)為這個(gè)庫名稱是最好的選擇,因?yàn)樗瑑煞N不同的工具,分別是phpcbf PHPCs。

Phpcs代碼嗅探器,它會掃描你的整個(gè)代碼,查找與配置的編碼標(biāo)準(zhǔn)不符的代碼部分。

您可以通過PHPCs使用多種編碼標(biāo)準(zhǔn)你甚至可以創(chuàng)建你自己的標(biāo)準(zhǔn)。在代碼掃描結(jié)束,PHPCs列出不遵循標(biāo)準(zhǔn)的代碼片段。真是太好用了。

現(xiàn)在,如何修改所有的錯誤的代碼片段?你可以打開所有的文件,更改代碼,運(yùn)行PHPCs直到看到錯誤不顯示出來,并重復(fù)上述過程。這樣會很無聊。

為了解決這一問題,PHPcodesniffer的一個(gè)稱為phpcbf的工具發(fā)揮作用了,或成為PHP代碼美化工具。它在不破壞你的代碼的前提下盡力修復(fù)所有的錯誤使之符合相同的代碼規(guī)范。

試著養(yǎng)成習(xí)慣,在push你的代碼到你的倉庫之前使用phpcs和phpcbf檢查代碼,這將保證你所寫的代碼都符合規(guī)范,一旦有人喜歡你的項(xiàng)目并想貢獻(xiàn)時(shí),他們閱讀起代碼來毫無問題。

框架

我不想花太多的時(shí)間討論框架,下面有一個(gè)好的框架,各有優(yōu)缺點(diǎn),就我而言,我不喜歡使用這些封裝來所有東西的大框架。我喜歡需要什么就使用什么。

如果你需要一個(gè)HTTP 客戶端,比如Guzzle。如果你需要你個(gè)模版引擎比如Twig。如果你需要一個(gè)路由器。找到適合你的組建并使用他們,將他們組合起來構(gòu)建你自己的應(yīng)用。

Symfony為這個(gè)概念做了很多,你可以使用這整個(gè)框架作為一個(gè)項(xiàng)目,也可以像上面所述使用任何你需要的組建。

然而,每當(dāng)我需要使用框架來寫應(yīng)用,我通常會選擇微型框架。它們真的很小,近提供最基礎(chǔ)的組件,并且十分的容易定制。

我的微型框架選擇是Slimframework,我認(rèn)為大家都應(yīng)該去試試它。

順便提一下,對于剛學(xué)編程的人來說,我真的建議在采用框架和使用前,你應(yīng)該試著建立一個(gè)你自己的框架。這將讓你對這整個(gè)的工作機(jī)制有個(gè)整體的了解。并讓你在以后采用大型框架時(shí)更容易理解。

現(xiàn)代PHP工具

讓我們以一組鏈接表來結(jié)束這篇文章,對于我來說,這些組件和工具和庫就代表來現(xiàn)代PHP的偉大思想:

Slimframework:一個(gè)既好又酷的微型框架

Symfony : 一個(gè)擁有偉大和可復(fù)用組件的大一點(diǎn)的框架

Guzzle : 一個(gè)簡單和好用HTTP客戶端

Behat : 一個(gè)行為驅(qū)動開發(fā)框架

PHPCS/CBF : 代碼檢查和美化

Faker : 虛擬數(shù)據(jù)生成器

Psysh:充滿極好的功能的即時(shí)開發(fā)控制臺

Composer : 依賴管理和其他的一些有用的特色

Packagist : 第三方庫倉庫

Twig : 模版引擎

我知道這個(gè)標(biāo)題確實(shí)很自負(fù),在這里我真正想說的是PHP正在進(jìn)步,它的生態(tài)系統(tǒng)同樣也在進(jìn)步(可能更快)。

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

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/28601.html

相關(guān)文章

  • 看吧,就是現(xiàn)代PHP 有的樣子

    摘要:這大概是我沒有及早使用,或多數(shù)開發(fā)者流連現(xiàn)狀造成的。它就是,一個(gè)的框架。行為驅(qū)動開發(fā)是來自測試驅(qū)動開發(fā)的開發(fā)過程。簡單的說,它就是經(jīng)常可能一天幾次將小塊代碼整合進(jìn)基礎(chǔ)代碼當(dāng)中的行為。 showImg(https://segmentfault.com/img/remote/1460000013769815); 這是一篇社區(qū)協(xié)同翻譯的文章,已完成翻譯,更多信息請點(diǎn)擊?協(xié)同翻譯介紹?。 文章...

    Tangpj 評論0 收藏0
  • 現(xiàn)代SaaS堆棧和未開發(fā)的數(shù)據(jù)量

    摘要:到現(xiàn)在為止還挺好堆棧中與客戶在任何級別進(jìn)行交互的每個(gè)產(chǎn)品都在生成數(shù)據(jù)。隨著這些產(chǎn)品的碎片化,數(shù)據(jù)碎片將導(dǎo)致大量未開發(fā)的數(shù)據(jù)。的堆棧在第三階段發(fā)射后年事情進(jìn)展順利,你的公司正在擴(kuò)展,以及你的團(tuán)隊(duì)的運(yùn)營。SaaS產(chǎn)品代表了當(dāng)今B2B技術(shù)的重要組成部分。能夠理解面向消費(fèi)者的新技術(shù)的影響比以往任何時(shí)候都更加重要。這也給那些沒有直接參與軟件的人帶來了許多新的挑戰(zhàn)。這篇文章是初創(chuàng)公司如何使用Modern...

    shusen 評論0 收藏0
  • PHP下如何優(yōu)雅的使用Docker來構(gòu)建環(huán)境()

    摘要:指令這條命令是指明最后容器需要暴露哪些端口號,這樣其他系統(tǒng)才能使用這個(gè)端口。但是靈活性不高,后面我在編排的時(shí)候會教大家用編排來統(tǒng)一開發(fā)環(huán)境。更多還有更多指令大家看下官方文檔,我自己覺得上面的指令算是使用比較多的了。 前言 上一篇文章呢,我們簡單的了解了Docker的基本命令,這篇文章呢,我們來了解下Dockerfile這個(gè)文件。 一個(gè)神奇的文件:Dockerfile 我不知道有多少同學(xué)...

    longshengwang 評論0 收藏0
  • PHP下如何優(yōu)雅的使用Docker來構(gòu)建環(huán)境()

    摘要:指令這條命令是指明最后容器需要暴露哪些端口號,這樣其他系統(tǒng)才能使用這個(gè)端口。但是靈活性不高,后面我在編排的時(shí)候會教大家用編排來統(tǒng)一開發(fā)環(huán)境。更多還有更多指令大家看下官方文檔,我自己覺得上面的指令算是使用比較多的了。 前言 上一篇文章呢,我們簡單的了解了Docker的基本命令,這篇文章呢,我們來了解下Dockerfile這個(gè)文件。 一個(gè)神奇的文件:Dockerfile 我不知道有多少同學(xué)...

    jollywing 評論0 收藏0
  • 最適合入門的Laravel初級教程(四)

    摘要:最適合入門的初級教程四路由可以分發(fā)請求路由中還可以引入頁面我們可以在中搞定一切了但是如果把業(yè)務(wù)邏輯都寫入到路由中那路由將龐大的難以維護(hù)于是控制器就有了很明顯的存在價(jià)值把業(yè)務(wù)邏輯寫在控制器中路由只負(fù)責(zé)轉(zhuǎn)發(fā)請求到指定的控制器即可那我們開始創(chuàng)建控 最適合入門的Laravel初級教程(四) 路由可以分發(fā)請求; 路由中還可以引入 html 頁面;我們可以在 route/web.php 中搞定一切...

    gplane 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<