日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP常用第三方包,php第三方包管理

發布時間:2023/12/3 php 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP常用第三方包,php第三方包管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

在編寫程序的時候,我們會用到別人的第三方包,俗稱輪子。如何正確引入一個第三方的包,且正確合理的放置,是一個值得規范的事情。

傳統的包引入include "the/path/of/file.php";

require "the/path/of/file.php";

include_once "the/path/of/file.php";

require_once "the/path/of/file.php";

function_name();

?>

優點:我們比較熟悉包內結構,文件位置

缺點:我們必須清楚文件結構;引入大量的inlude,require語句;不能實現懶加載

新的包引入方式

__autoload()魔術方法:當運行時調用了當前沒有聲明過的類時,自動運行該函數。<?php

function __autoload($class_name){

require "./new_package/class2.php";

}

(new hello())->sayHello();

我們可以在我們文件中重新定義這個函數,并添加我們函數中的邏輯去實現文件的加載,這種方式屬于懶加載,一定程度上能節省資源。

__autoload()函數必須傳入參數(盡管我們也許不會使用)

在原本autoload中,同一個文件中只能支持同時存在一個autoload函數,重復定義會引起panic。

autoload的改良

在php5.5后,引入了spl改良版的autoload系列函數,使用spl_autoload_register或者set_include_path和spl_autoload的組合可以很快引入某路徑下的類。<?php

//

//spl_autoload_register(function ($class_name){

// if ($class_name === 'hello'){

// include "./new_package/class2.php";

// }

//});

set_include_path("./new_package/"); //這里需要將路徑放入include

spl_autoload("class2");

(new hello())->sayHello();

優點:懶加載,重新定義/抽象了require和include

缺點:仍無法解決大量的引入代碼問題;可能產生循環引用

包管理工具Composer

composer是php項目中的一個開源第三方包管理工具,是一個讓人眼前一亮的工具,它將autoload的思想發揮到了新的層次。

一個使用composer來管理第三方包的項目通常會在項目根目錄下包含vender文件夾,里面放有我們的第三方包。

composer使用方法:composer init//初始化一個目錄成為composer管理項目

composer require "[email?protected]*"

//如果已經存在別人的composer.json文件

composer install

//升級版本

composer update

//刪除

composer remove "xxxx"

composer通過生成一個總的引入類來引入所有的第三方依賴,我們只需要在整個項目的一個地方引入require "./vender/autoload.php";這樣一個文件,就會去自動執行整個需要文件的執行。

composer.json中的autoload和autoload_dev說明了整個項目中的依賴關系的命名關系"autoload": {

"psr-4": {

"App\": "app/"

},

"classmap": [

"database/seeds",

"database/factories"

]

},

我們可以直接使用AppHello來代表在app目錄下的Hello類,composer會自動實現命名空間到文件目錄的轉換。

這篇博客中有更詳細的命名映射方法。

composer引入的版本號表達式意義實例含義數字指定版本1.2.3下載1.2.3版本

~符號維持小版本~1.2.3下載1.3.0前的版本

^符號維持大版本^1.2.3下載2.0.0前的版本

*符號任意版本1.2.*下載1.2中任意一個版本

運算符運算符含義>=1.2.3下載大于1.2.3的版本

@符號選擇分支下載dev分支中的1.2.3版本

多個條件支持,和|分割,代表and or邏輯運算,如composer require xxx [email?protected],!=1.2.3

注意

不要隨意改動composer.lock文件中的內容

注意將vender文件夾從版本控制中去除

總結

以上是生活随笔為你收集整理的PHP常用第三方包,php第三方包管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。