【PHP系列】PHP組件詳解

來源:互聯網
上載者:User

標籤:並且   git   沒有   比較   awesome   下載   creat   控制   title   

緣起

楓爺之前做過幾年的PHP的研發,大部分都是在開源架構的引導下,編寫代碼。現在依然,本能的會去讓我使用某個PHP架構開發PHP應用,也是因為懶吧,沒有好好的去研究研究除了架構之外的一些東西。

今天和和大家講的,也是後來結識了很多PHP架構後,發現有很多架構的工具不支援的功能,不得已,自己寫寫或者去外面找找的。為了儘可能少的重複造輪子,楓爺今天給大家帶來一個比較實用的工具,能夠讓你輕鬆快速的找到想要的功能並且整合在你的PHP應用中。

它就是組件。

組件定義

組件是打包的代碼,用於幫你解決PHP應用中某個具體的問題。組件中的類、介面和性狀通常放在同一個命名空間中。

組件組件的作用非常單一,別指望一個組件能夠給你解決很多問題,組件一定是功能單一的。

組件可能就是一個PHP檔案,一個類,非常的簡單。

使用正確的工具做正確的事情,如果有機會,還是希望能通過一些PHP組件搭建準確解決問題的小型項目,組件也有助於有助於讓代碼保持輕量級和靈活性。

選擇組件

我們可以在https://packagist.org/中尋找PHP組件。

如果你對PHP的哪些組件好比較感興趣,不妨去到這個連結。

https://github.com/ziadoz/awesome-php

這個連結裡面列出了很多優秀的PHP組件。

如果你想要一個HTTP請求相關的組件,那在上面的搜尋方塊中輸入HTTP,斷行符號,你就可以看到一個和HTTP請求相關的組件列表。

我建議根據口碑去選擇上面的組件,如果覺得太麻煩,就按照star數量吧,還是比較具有參考性的。

使用PHP組件

使用PHP組件必須解決兩個問題,依賴管理和自動載入。當然了,我們也有對應的工具去解決它。

Composer是安裝PHP組件的工具,Composer也是PHP組件的依賴管理器,運行在命令列中。

Composer能和Packagist配合,如果你需要通過Composer下載組件,Composer會通過Packagist擷取相關組件。

Composer的作用很重要,依賴管理和自動載入就會讓你很頭疼,因為PSR-4的出現,依賴管理器Composer會為項目中所有的PHP組件自動產生符合PSR標準的自動載入器。Composer解決了依賴管理和自動載入的難題。

如何安裝Composer

大夥可以根據官方文檔進行安裝:https://getcomposer.org/

我這邊提供的是mac os和Linux下的安裝方式,ssh到遠程機,開始愉快的安裝吧。

$curl -sS https://getcomposer.org/installer | php$mv composer.phar /usr/local/bin/composer

如遇許可權問題,請自行sudo。讓我們在命令列中輸入composer命令,看看效果吧。

#composer

顯示下面的畫面,表明你已經成功安裝了Composer。

如果你的Composer年久失修,它會提醒你升級。直接輸入下面的命令即可完成升級。

$composer self-update
使用Composer

組件的名稱一般為企業名/包名。比方說我們剛才在Packagist中搜尋PHP返回的列表中,guzzle/http中的guzzle就是企業名,http就是包名。企業名是全域唯一的,這是全域識別碼,用於識別名下的包屬於誰。包名用於唯一識別企業名下的某個包。

Packagist會列出組件的所有版本(包括正在研發的dev版本),但是,我們沒必要去一個版本一個版本的篩選,Composer會幫我們做了這事。

如何下載這個http請求組件呢,這個時候,我們先在命令列中cd到我們想要下載組件的項目最頂層目錄,輸入如下命令即可下載guzzle/http這個組件啦。

#composer require guzzle/http

這個命令會讓Composer尋找並安裝指定PHP組件的最新穩定版。這樣,就可以擁有一個http請求相關的PHP組件啦,是不是很簡單。 

出現下面的提示,表明我們要下載的組件已經下載成功啦!

對於黃色部分的提示,我們暫且先不管他,這邊只是做個組件的測試,如果大家需要使用全套,建議使用下面的命令。

#composer require guzzle/guzzle

在執行這條命令的時候,會在你項目的頂層目錄裡面建立兩個檔案:composer.json和composer.lock,記住,這兩個檔案都需要被納入版本控制系統。

這個組件最終會被放在你項目頂層目錄的vender/目錄中。

composer.json

這個檔案必須是有效json檔案,至於是否有效,大家可以拷貝上面的代碼,到這個網站上面去認證:

http://www.bejson.com/

它會告訴你,你的檔案是不是一個標準的json。

Composer會使用這個檔案中的資訊對PHP組件進行尋找、安裝和自動載入。

composer.json檔案的完整格式參見composer官網:https://getcomposer.org/

composer.lock

這個檔案會列出項目使用的所有PHP組件,以及組件的具體版本號碼,這其實和檔案鎖啊,進程鎖啊相關的有異曲同工之妙。

為什麼需要將這個檔案納入版本控制系統呢,因為你需要讓你的其他團隊成員知道,項目使用的PHP組件都是哪些版本的,這樣能避免由於組件版本差異導致的缺陷風險。

使用組件

php組件下載下來了,如何去使用它呢,比方說我們下載下來的http組件在vender目錄下面了,我們需要在我們項目的入口檔案(一般是index.php)裡面新增下面一句話

require ‘vendor/autoload.php‘;

Composer下載PHP組件時還會為項目的所有依賴建立一個符合PSR標準的自動載入器。我們僅需在我們的項目入口檔案內加入上面這段代碼即可。這樣我們就可以執行個體化項目中的任何PHP組件,這些組件會按需自動載入。

使用組件裡面的方法與函數,一般使用下面的代碼:

$loop = React\EventLoop\Factory::create();$socket = new React\Socket\Server(8080, $loop);$http = new React\Http\Server($socket);$http->on(‘request‘, function (Request $request, Response $response) {    $response->writeHead(200, array(‘Content-Type‘ => ‘text/plain‘));    $response->end("Hello World!\n");});$loop->run();

這樣,大功告成。今天就和大夥說到這裡,至於組件裡面的方法如何去使用,在Packagist中都有詳細的解釋噠,大家可以多花點時間,多研究研究組件,會對你有很大協助的。^_^

【PHP系列】PHP組件詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.