【PHP系列】PHP組件詳解

黄舟
發布: 2023-03-06 11:16:01
原創
1998 人瀏覽過

緣起

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

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

它就是元件。

元件定義

元件是打包好的程式碼,用來幫你解決PHP應用程式中某個特定的問題。元件中的類別、介面和性狀通常放在同一個命名空間。

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

元件可能就是一個PHP文件,一個類,非常的簡單。

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

選擇元件

我們可以在http://www.php.cn/中找到PHP元件。

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

http://www.php.cn/

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

如果你想要一個HTTP請求相關的元件,那在上面的搜尋框中輸入HTTP,回車,你就可以看到一個和HTTP請求相關的元件清單。

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

使用PHP元件

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

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

Composer能和Packagist配合,如果你需要透過Composer下載元件,Composer會透過Packagist取得相關元件。

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

如何安裝Composer

大夥可以根據官方文件進行安裝:http://www.php.cn/

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

$curl -sS http://www.php.cn/ | 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.php.cn/

它会告诉你,你的文件是不是一个标准的json。

Composer会使用这个文件中的信息对PHP组件进行查找、安装和自动加载。

composer.json文件的完整格式参见composer官网:http://www.php.cn/

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组件详解的内容,更多相关内容请关注PHP中文网(www.php.cn)!


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板