【PHP系列】PHP組件詳解

緣起

楓爺以前作過幾年的PHP的研發,大部分都是在開源框架的引導下,編寫代碼。如今依然,本能的會去讓我使用某個PHP框架開發PHP應用,也是由於懶吧,沒有好好的去研究研究除了框架以外的一些東西。php

今天和和你們講的,也是後來結識了不少PHP框架後,發現有不少框架的工具不支持的功能,不得已,本身寫寫或者去外面找找的。爲了儘量少的重複造輪子,楓爺今天給你們帶來一個比較實用的工具,可以讓你輕鬆快速的找到想要的功能而且集成在你的PHP應用中。git

它就是組件。github

組件定義

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

組件組件的做用很是單一,別期望一個組件可以給你解決不少問題,組件必定是功能單一的。composer

組件可能就是一個PHP文件,一個類,很是的簡單。框架

使用正確的工具作正確的事情,若是有機會,仍是但願能經過一些PHP組件搭建準確解決問題的小型項目,組件也有助於有助於讓代碼保持輕量級和靈活性。ssh

選擇組件

咱們能夠在https://packagist.org/中查找PHP組件。curl

若是你對PHP的哪些組件比如較感興趣,不妨去到這個連接。socket

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中都有詳細的解釋噠,你們能夠多花點時間,多研究研究組件,會對你有很大幫助的。^_^

相關文章
相關標籤/搜索