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

pilishen發表於2018-04-10

本文來自medium----原文連結; 歡迎作客我們的php&Laravel學習群:109256050

這個標題是不是很自負?沒錯!儘管我已經使用php工作很多年了,我仍然不能明確的說出這項工作的最佳實踐方式和最好的工具,但接下來我要開始試著這樣做。

我看到開發者使用php進行開發的工作方式發生了真正的變化,不僅是這門語言隨著版本的更新和改進明顯的變得越來越成熟和健壯,而且圍繞它的整個生態系統正在發生改變。

開發者釋出了很多新的工具、第三方庫、框架和文章,定義了很多設計模式來使程式碼更加的優雅和易於理解。一些人在想辦法讓工作(和你作為開發者的生活)更有效率、簡潔和有趣

我並不在新趨勢的早期就開始擁抱它們,實際上,我只會採用那些當我確定它們背後有社群支援並且我真的覺得它會提升我的工作的新工具。我經常乾的事是努力讓我的程式碼符合最佳實踐。

基於這些緣由,我花時間使用像Composer和PHPUnit這樣的工具。大概在一年前,我向所有這些閃亮的新事物敞開了我的心。

首先是PSR,然後是Composer、PHPUnit、Travis-ci和一些其他的庫和極好的工具。我甚至開始使用IDE(Vim FTW,與Xdebug整合的PHPStrom是一個穩健開發流的必須工具)!

什麼是現代?

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

網頁上充斥著大量的關於PHP多麼不好、如果你不得不使用PHP程式碼工作你的生活將多糟糕、這個語言多麼的醜和其他的你能想到的文章!

如果你繼續與以前遺留程式碼一起工作,也許你的生活不會那麼好,但是如果你有機會在一個新專案上工作,並且能夠使用所有的新工具,你將看到我要討論的新PHP。

我每天都有一些PHP工作上的問題,但是我們不能對語言、社群和生態系統發生的變化視而不見。前面還有很長的路要走,但PHP領域已經成熟了。

我開始為我工作的公司建立內部API的SDK,作為一個寵物專案,並決定遵循最佳實踐。他們中的大多數我已經在做了,但是我在做一些事情上做了一些改變。這些變化和我去年學到的都是本文的主題,我稱之為現代PHP。

我開始為我工作的公司建立內部API的SDK,僅作為一個興趣專案並決定遵循最佳實踐。他們中的大多數我已經在做了,但是我在做一些事情的方式上做了一些改變。這些變化和我去年學到的知識都是本文的主題,我稱之為現代PHP。

讓我們來開始工作流

正如我所說,我是這IDE的新手,phpStorm是一個非常非常偉大的軟體,我對它一見鍾情。這是我的第一個也是唯一的IDE。這是我第一次嘗試IDE,我甚至不需要嘗試任何其他IDE。

與XDebug的結合非常的完美,PHP名稱空間解析,整合Composer,整合GIT,自動補全,程式碼生成,程式碼重構等等。

你不是必須使用IDE,實際上,這一點完全是個人愛好。你應該使用任何適合您的需求的工具- Vim,Atom,Emacs,Bracket,NetBeans,phpStorm,Eclipse,等等。這裡有兩個要點是生產力和效率。您的IDE /文字編輯器必須至少在這兩點上幫助您。

對我來說,整合偵錯程式是一個很重要的功能。為大專案編寫程式碼(實際上也適用於小專案),你必須使用一個合用的偵錯程式。讓我們忘記那些var_dumpsprint_rs。你需要在執行時將這些變數輸出出來,分析跟蹤棧,設定斷點。這些東西是必不可少的並使開發和重構更加容易。

我甚至不知道有其他的選擇,XDebug有你需要的一切。你有幾分鐘時間嗎?如果你還沒這麼做,花一點時間來安裝Xdebug,整合進你的IDE或文字編輯器。開始使用正確的工具除錯程式碼。

GitHub是另一個我想讓你多加留意的工具。這裡的重點是整合。

有幾個工具整合與GitHub上你應該開始使用他們。這些工具可以在持續的整合過程中生成度量、執行測試、為您執行作業以及在工作流程中做各種事情。整合是你開始使用GitHub的一個很好的理由。

依賴管理

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

現代PHP生態系統的另一個要點是依賴管理,而Composer就是做這個工作的工具。

Composer已經5歲了,但在我看來,大量的功能在近幾年才採用。也許是因為我不是一個早期擁抱著或者因為PHP開發者都不願改變。

這個工具提供了一個前端Packagist,它是一個PHP包庫,由php庫、專案和工具組成,它們的原始碼儲存在GitHub(或類似的其他地方比如bitbucket)。

我在本文中討論的所有庫,或者可能是您的其中一個專案,可以用簡單的下面方法新增到專案中。

$ composer require package_vendor/package_name

如果你不知道某個包的發行方,你可以通過檢索包來找到和安裝合適的包

$ composer search package_name 如果僅用來管理依賴,Composer會是一個偉大的工具,但是它還做了很多其他的事。花點時間來安裝Composer並閱讀它的文件。

正確使用命令列介面

這就是現代php該有的樣子(一)
我非常喜歡使用CLI介面快速地嘗試想法。對我來說,一個偉大的工具是IPython REPL。它可以幫助你補全你的程式碼,讓你輕鬆定義函式,方便使用文件和其他一些令人驚訝的功能。遺憾的是這個工具是Python的,而不是PHP的。

在PHP世界中,我們有一種叫做“互動模式”的東西,可以通過終端訪問,鍵入下面內容:

$ php -a
Interactive mode enabled
php >
複製程式碼

此時,您處於互動模式,可以開始測試某些東西,它工作了,但是這個工具太不直觀了,應為我知道IPython是怎麼工作的,所以我嘗試了很多次,最後還是放棄使用它了。

幸運的是有一個很酷的新的CLI(命令列介面)和它的名字是Psysh。psysh是一個了不起的工具,充滿了有趣的功能,可以使用Composer全域性或者本地安裝。

對於我來說psysh最好的特徵是內嵌文件。訪問一個PHP函式的文件不需要轉去php.net非常方便。缺點是,在功能完全發揮之前,您需要做一些額外的配置。

安裝後,輸入以下命令(我用Debian這裡,這可能不適合所有人)來讓它正常工作

$ apt-get install php7.1-sqlite3
$ mkdir /usr/local/share/psysh
$ wget http://psysh.org/manual/en/php_manual.sqlite -o /usr/local/share/psysh/php_manual.sqlite
複製程式碼

第一條命令不是必須的,如果你已經安裝來Sqlite你可以跳過這步。第二條命令建立來一個儲存文件的目錄,第三條命令下載文件並儲存到第二步建立的目錄中,注意所有的命令必須以root 使用者執行。

然後你可以這樣:

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

去Psysh官網學習更多的關於這個工具的知識

相關文章