国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

fevin / 856人閱讀

摘要:所以,是幫助您創建您的項目的測試框架,單元測試。行為驅動開發是一個來自測試驅動開發的開發過程。這種語言被稱為,是用來描述被測試的預期的行為。代碼將被測試并且沒有異常。這些標準提出了現代編碼風格。

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

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

我是在處理復雜的遺留項目時決定學習測試。代碼是如此的脆弱和僵硬,以至于一旦我們添加一些代碼就會破壞它。新的特征?實現和破壞某事!修復錯誤?新建另一個。

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

第一個工具是PHPUnit。如官方網站所述

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

這是單元測試框架xUnit架構實例。

所以,PHPUnit是幫助您創建您的項目的測試框架,單元測試。它提供了幾個函數來測試代碼的結果,并生成與這些測試結果相同的良好輸出。

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

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

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

在這些描述背后,每當描述于phpDoc中的指定的方法有正則模式匹配相應的php代碼就會被調用,通過SDK、應用程序或Web系統,這些代碼實現了這些步驟,模擬真實的用戶將做的

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

之后,您開始編寫每一步的實際代碼,并繼續重復這個循環。

實現一個步驟的php代碼

運行測試

如果運行正常,繼續實現下一步的php代碼

如果有異常,修復它

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

持續集成

持續集成(CI)是一個過程——一種做某事的方法,而這一點對于我們的軟件工程師來說,就是創造軟件。

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

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

通過一個被良好規范的程序實現一個良好的工作流程是極好的,Travis CI可以幫助你做這項工作。遵循這個好的開始,發現對軟件開發過程的思考是多么有趣,而不僅僅是代碼本身。

遵循PSR-1 和 PSR-2

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

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

PHP—FIG做許多其他的工作,但提出一個統一的代碼,他們說:“讓我們停止操心代碼風格,讓我們每個人都遵循同一個標準,并開始思考創造偉大的軟件”。現在,每當你查看某人的代碼時,你只會操心它是如何工作的,而不是研究格式、結構。

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

這些標準提出了現代PHP編碼風格。請務必在開始使用之前閱讀它們。不要認為在編寫代碼時你會記住所有的代碼,這是一個過程,但為了讓你確定你使用的規范,有一些工具可以幫助你完成它。
PHP CodeSniffer是一種工具,你可以在Packagist上找到它,使用Composer安裝它。我不認為這個庫名稱是最好的選擇,因為它包含兩種不同的工具,分別是phpcbf PHPCs。

Phpcs代碼嗅探器,它會掃描你的整個代碼,查找與配置的編碼標準不符的代碼部分。

您可以通過PHPCs使用多種編碼標準你甚至可以創建你自己的標準。在代碼掃描結束,PHPCs列出不遵循標準的代碼片段。真是太好用了。

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

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

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

框架

我不想花太多的時間討論框架,下面有一個好的框架,各有優缺點,就我而言,我不喜歡使用這些封裝來所有東西的大框架。我喜歡需要什么就使用什么。

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

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

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

我的微型框架選擇是Slimframework,我認為大家都應該去試試它。

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

現代PHP工具

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

Slimframework:一個既好又酷的微型框架

Symfony : 一個擁有偉大和可復用組件的大一點的框架

Guzzle : 一個簡單和好用HTTP客戶端

Behat : 一個行為驅動開發框架

PHPCS/CBF : 代碼檢查和美化

Faker : 虛擬數據生成器

Psysh:充滿極好的功能的即時開發控制臺

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

Packagist : 第三方庫倉庫

Twig : 模版引擎

我知道這個標題確實很自負,在這里我真正想說的是PHP正在進步,它的生態系統同樣也在進步(可能更快)。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28601.html

相關文章

  • 看吧,就是現代PHP 有的樣子

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

    Tangpj 評論0 收藏0
  • 現代SaaS堆棧和未開發的數據量

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

    shusen 評論0 收藏0
  • PHP下如何優雅的使用Docker來構建環境()

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

    longshengwang 評論0 收藏0
  • PHP下如何優雅的使用Docker來構建環境()

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

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

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

    gplane 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<