首頁 後端開發 php教程 PHP開發者應了解的24個函式庫

PHP開發者應了解的24個函式庫

Aug 08, 2016 am 09:26 AM
gt nbsp php quot

作為一個PHP開發者,現在是一個令人興奮的時刻。每天有許多多有用的函式庫分發出來,在Github上很容易發現和使用這些函式庫。下面是我曾經遇過最酷的24個函式庫。你最喜歡的庫沒有在這個清單裡面?那就在評論中分享吧!

1. Dispatch – 微框架

Dispatch是一個PHP小框架。它並沒有給你完整的MVC設置,但你可以定義URL規則和方法,以便更好地組織應用程式。這對API、簡單的網站或原型來說是完美的。

function

1

2

3

4

5

6

4

58

11

12

13

14

15

16

17

18

//包含庫

include定義你的路由

get ('/greet', function

() {

//渲染視圖    ) });

// post處理

post('/greet', function() {

    

$name= from(

$_POST 'name');'name');

// render a view while passing some locals. array('name'

=> $name));

}); dispatch(); 你可以匹配特定類型的HTTP請求和路徑,渲染視圖或做更多事情。如果你合併Dispatch和其他框架,那麼你就可以擁有一個相當強大且輕量級的程式! 2. Klein – PHP快如閃電的路由Klein是另一個針對PHP5.3+版本的輕量級路由庫。雖然它有一些比Dispatch冗長的語法,但它相當快。這有一個例子:

1

2

3

resrespond(
($request

) {

    

echo

    });14
echo

    

你也可以自訂來指定HTTP方法和使用正規表示式作為路徑。

1

234564

58

1112

13

respond(

'GET'

,
'/posts'

,

$callback

);

respond(

'POST'

respond(

'POST'

'/posts/create'

,

$callback

);

respond(

'PUT', 📜 '/posts/[i:id]', $callback);//匹配多種請求方法:

respond(array(' POST','GET'),

$route, $callback);//你或許也想在相同的地方處理請求🜎 /[i:id] ',

function($request, $response) {    

switch(

// do something    } });

對於小型專案來說這是很棒的,但當你把一個像這樣的函式庫用於大型應用程式時,你不得不遵守規矩,因為你的程式碼可能很快就變得不可維護。所以你最好搭配像Laravel或CodeIgniter這樣完全成熟的框架。

3. Ham – 帶有快取的路由庫

Ham也是一款輕量級的路由框架,但是它利用快取甚至獲得了更快的速度。它透過把任何I/O相關的東西緩存進XCache/APC。以下是一個例子:

use

1

2

3

4

5

11

12

13

14

15

16

17

18

require

=

new
Ham(

'example');$app

->config_from_file( (' /pork', function($app

) {

    return.

$hello

= function ($app, $name='world'

) {

    return    

return

. array

(        'name' };$app->route( '/hello/<string>'</string>

,

$hello);$app->route('/', $hello

);

$app->run();

,在大多數主機提供者提供的主機上它可能用不了。但如果你擁有一個安裝它們其一的主機,或者你可以操控你的web伺服器,你應該嘗試這款最快的框架。 4. Assetic – 資源管理

Assetic是一個PHP的資源管理框架,用於合併和減少了CSS/JS資源。下面是例子。

12345

6

458 11useAsseticAssetAssetCollection;

useAsseticAssetFileAsset;

AsseticAssetGlobAsset;

array

(

    

newGlobAsset (

'/path/to/js/*'

),

'/path/to/js/*'

),

    

new

FileAsset() ;

//當資源被輸出時,程式碼會被合併

echo
$js

->dump();

以這種方式合併資源是一個好主意,因為它可以加速網站。不僅總下載量減少了,也消除了大量不必要的HTTP請求(這是最影響頁面加載時間的兩件事)

5. ImageWorkshop – 帶層的圖片處理

ImageWorkshop是一個讓你操控有層圖片的開源庫。借助它你可以重新定義尺寸、裁剪、製作縮圖、打浮水印或做更多事情。以下是一個例子:

12

1

2

3

4

5

11

// 從norway.jpg圖片初始化norway層

$norwayLayer
= ImageWorkshop::initFromPath(

'/path/to/images/norway.jpg'

'/path/to/images/norway.jpg'

); // 從watermark.png圖片初始化watermark層(水印層)

$watermarkLayer

= ImageWorkshop::initFromPath(

'/p

$image= $norwayLayer

->getResult();

// 這是產生的圖片!header('Content-type: image/jpeg');

,5,5,5,5,005); // We choose to show a JPG with a quality of 95%exit

;.簡化,如果你需要一些更強大的東西,你應該看看Imagine library! 6. Snappy – 快照/PDF庫

Snappy是一個PHP5庫,可以產生快照、URL、HTML、PDF。它依賴wkhtmltopdf binary(在Linux,Windows和OSX上都可使用)。你可以這樣使用它們:

3

4

11

12

13

1415

require_once

'/path/to/snappy/src/autoload.php'

;

use

KnpSnappyPdf;

//透過wkhtmltopdf binary路徑初始化庫

$c /usr/local/bin/wkhtmltopdf'

);

//透過把Content-type頭設定為pdf來在瀏覽器中展示pdf

header('Content-Type: application/pdf'););

'Content-Disposition: attachment; filename="file.pdf"'

);

echo

$snappy

->getOutput(

'http://www.github.com');

可能不允許呼叫外部二進位程式。 7. Idiorm – 輕量級ORM庫Idiorm是個人之前在本網站教程中用過最喜愛的一款。它是一款輕量級的ORM函式庫,一個建立在PDO之上的PHP5查詢建構器。借助它,你可以忘記如何書寫無聊的SQL:

1

23 10 1112

13
16

17

18

'user'

)

->where_equal(

'username'

,

'j4mie'

)

    

->find_one();

$>

'Jamie'

;

$user

->save();

$tweets

    

->select(
'tweet.*'

)    ->join('user'

, array(        'user.id',

'=', 'tweet.user_id'

    )) user.username',

'j4mie'

)

    

->find_many();o tweet) {

    echo $tweet->text;

}

Idiorm有一個姊妹庫叫Paris,Paris是基於Idiorm的Active Record實作。

8. Underscore – PHP的工具腰帶

Underscore是原始Underscore.js的一個介面 – Javascript應用的工具腰帶。 PHP版本沒有讓人失望,而且幾乎支援了所有原生功能。以下是一些例子:

7

1

2

3

4

5

11

12

13

__::each(

array

(1, 2, 3),
function

($num) { echo$num. ','; }); // 1,2,3,$multiplier= 2;__::each(

array__::each(

array

function($num, $index) use($multiplier) {. '. (

$num * $multiplier) . ',';});// prints: 0=2,1=4,2=6, ( 1, 2, 3), function

(

$memo

,

$num

) {

return$memo+ $num; }, 0); // 6__::find(array(1, 2, 3, 4), function($num) { return

$num

% 2 === 0; }); // 2__::filter(, y function($num) { return$num% 2 === 0; });

// array(2, 4)化更為強大。 9. Requests – 簡單HTTP請求Requests是一個簡化HTTP請求的函式庫。如果你跟我一樣,幾乎從來都記不住傳遞給Curl的各種各樣的參數,那麼它就是為你準備的:123 5

6
89

10

11

12

11, '/'
12

(

'Accept'

=>

'application/json'

);

$options

=

array

( user'

'pass'

));$request= Requests::get('https://api.github.com/gists','https://api.github.com/gists','https://api.github.com/gists',

$headers

, $options);var_dump($ var_dump( $request->headers['content-type']);

// string(31) "application/json; charset=utf-8" request->body);// string(26891) "[…]"

、D PATCH HTTP請求,你可以透過陣列新增檔案和參數,並且可以存取所有對應資料。 10. Buzz – 簡單的HTTP請求庫

Buzz是另一個完成HTTP請求的函式庫。以下是一個例子:12

34

5 $request= new

BuzzMessageRequest('HEAD'

,
, 'http://google.com'

);

$response

=c ent

=
new

BuzzClientFileGetContents();

$client

->send(

$request

,

$response

);

echo$request;

因為它缺乏文檔,所以你不得不閱讀源碼來獲知它支援的所有參數。

11. Goutte – Web抓取庫

Goutte是一個抓取網站和提取資料的函式庫。它提供了一個優雅的API,這使得從遠端頁面上選擇特定元素變得簡單。

34

1

2

3

4

5

6

4

58

11

12

13

14

15

require_once
'/path/to/goutte.phar'

; use;

newClient();

$crawler= $client->request(

'GET', 'http://www.symfony-project.org/'); //點擊連結$link=Link

$crawler->selectLink(c

$crawler

->selectLink(cins = $client->click($link);

//使用一個類別CSS語法提取資料$t= $crawler->filter(

);

echo

"Here is the text: $t"; 🜎

1

2
5

6

4

58

11

12
13

14

15

16

17

18

19

20

21

22

printf(

"Right now is %s"

, Carbon::now()->toDateTimeString());

printf(

"Right now in Vancouver is %s"

, Carbon::now(

'America/Vancover) ;

$tomorrow

= Carbon::now()->addDay();

$lastWeek

= Carprobon::now()->subWeek($lastWeek

= Carprobon::now()->subWeek();

= Carbon::createFromDate(2012)->addYears(4);

$officialDate= Carbon::now()->toRFC2822String();= Carbon::now()->toRFC2822String(); (1975, 5, 21)->age;

$noonTodayLondonTime= Carbon::createFromTime(12, 0, 0, 'Europe/London' = Carbon::createFromDate(2012, 12, 21, 'GMT'

);

//總是以UTC對比

//總是以UTC對比

$endOfWorld)) {

    die

();::>Car ()) {

    

echo'Party!';

}

echo} // '2分鐘之前'

13. Ubench – 微型基準庫

Ubench 是用於評測PHP程式碼的微型函式庫,可監控(程式碼)執行時間和記憶體使用率。以下是範例:

13 14

1

2

3

4

5

11

12

13

14

15

16

17

18

19

20

$bench

=

new

Ubench;

$bench

->start();//執行一些程式碼

$bench取得執行消耗時間與記憶體echo

$bench

->getTime(); // 156ms or 1.123s🜎

// elapsed microtime in float

echo$bench->getTime(false, '%d%s');

// 156ms or 1s

// 156ms or 1s

// 156ms or 1secho$bench

->getMemoryPeak(); // 152B or 90. $bench->getMemoryPeak( true); // memory peak in bytes 內存峰值

echo$bench->getMemoryPeak(false, ->getMemoryPeak(false, .33%

// 152B or 90.152Kb or 15.234Mb

//在結束標識處返回記憶體使用情況echo🜎 / 152B or 90.00Kb或 15.23Mb

(僅)在開發時運行這些校驗是一個好主意。

14. Validation – 輸入驗證引擎

Validation 聲稱是PHP庫裡最強大的驗證引擎。但是,它能名符其實嗎?看下面:12

3

4

5

645 11

12
15

16

17

18

19

20pd v;

//簡單驗證

$number

= 123;

v::numeric()->validate(

$number

);

//true

//鍊式驗證

$usernameValidator

= v::alnum()->noWhitespace()->length(

->validate(

'alganet'

);

//true

//驗證物件屬性

$user= newstdClass 'Alexandre'

;

$user->birthdate = '1987-07-01'

; //在一個簡單鏈中驗證他的屬性$userValidator

::string()->length(1,32))

                  ()->minimumAge(18));

$userValidator->validate($user); //true

你可以透過這個函式庫驗證你的表單或其他使用者提交的資料。除此之外,它內建了許多校驗,拋出異常和自訂錯誤訊息。 15. Filterus – 過濾庫Filterus是另一個過濾庫,但它不僅可以驗證,也可以過濾匹配預設模式的輸出。以下是一個例子:

123

45 'string,max:5 ');

$str=

'This is a test string'; $f->validate(

$str); // false$f->filter($str

); // 'This '

Filterus有很多內建模式,支援鍊式用法,甚至可以用獨立的驗證規則去驗證陣列元素。

16. Faker – 假資料產生器

Faker 是一個為你產生假資料的PHP函式庫。當你需要填入一個測試資料庫,或為你的web應用程式產生測試資料時,它能派上用場。它也非常容易使用:

$m

1

2

3

4

11

12

13

14

15

//引用Faker 自動載入器

require_onceload.

//使用工廠建立來建立FakerGenerator實例

$faker= FakerFactory::create();

//透過存取屬性產生假資料

//透過存取屬性產生假資料

; // 'Lucy Cechtelar';

echo$faker

->address;

// Cartwrightshire, SC 88120- 6700"echo$faker

->text;  // Sint velit % perkopinquealperk le

只要你繼續存取物件屬性,它將繼續傳回隨機產生的資料。

17. Mustache.php – 優雅模板庫Mustache是​​一款流行的模板語言,實際上已經在各種程式語言中實現。使用它,你可以在客戶端或服務段重複使用模板。 正如你猜得那樣,Mustache.php 是使用PHP實現的。

12

$m

=
->render('Hello { {planet}}'

,

array

(

'planet'

=> 1314
'World!'

));

// "Hello World!"

建議看一下官方網站Mustache docs 看更多進階的範例。 18. Gaufrette – 檔案系統抽象層

Gaufrette是一個PHP5函式庫,提供了一個檔案系統的抽象層。它使得以相同方式操控本地文件,FTP伺服器,亞馬遜 S3或更多操作變為可能。它允許你開發程式時,不用了解未來你將怎麼存取你的文件。 123456458 11

12
15

16

17

useGaufretteFilesystem;)

use

GaufretteFilesystem;

use

GaufretteAdapterLocal

as

LocalAdapter;

//本地檔案:

$adapter

=

new

LocalAdapter(

)

'/var/media'

LocalAdapter(
'/var/media'

LocalAdapter();

//可選地使用一個FTP適配器

// $ftp = new FtpAdapter($path, $host, $username, $password, $port); //初始化檔案系統

$filesystem= newFilesystem($adapter

//使用它

$content= $filesystem->read() 'Hello I am the new content';

$filesystem

->write('myFile'

, $content

);

也有快取和記憶體適配器,並且隨後將會增加更多適配器。

19. Omnipay – 支付處理庫

Omnipay是一個PHP支付處理庫。它有一個清晰一致的API,並且支援數十個網關。使用這個函式庫,你只需要學習一個API和處理各種各樣的支付處理器。以下是一個例子:

1

2

3

4

5

11

12

13

14

15

16

17

18

19

.

OmnipayGatewayFactory;

$gateway
= GatewayFactory:: create(

'Stripe');

$gateway->setApiKey('abc123'

); number'= > '4111111111111111', 'expiryMonth'

=> 6, 'expiryYear'=> 2016];$response

= $gateway 'card' => $formData]);if($response->isSuccessful()) {

     print_r($response);} elseif() //跳到異地支付網關     

$response

->redirect();}     

exit ($response

->getMessage());}

進行切換。

20. Upload – 處理檔案上傳Upload是一個簡化檔案上傳和驗證的函式庫。上傳表單時,這個函式庫會校驗檔案類型和尺寸。

1

2

345

6

458 11

121314 151617

1819

20
$

'/path/to/directory'

);

$file

= new    

UploadFile(

'foo'

,

$storage

);

//驗證檔案上傳

$file

->addValidations(

文件類型是"image/ png"

    

new

UploadValidationMimetype(

'image/png'

),確保文件不超過5

'image/png'

),確保不使用文件。或"G")

new

UploadValidationSize('5M')) try{

    //成功    $file->upload(); $e) {

    

/ /失敗!

    $errors=

$file

->getErrors();$file->getErrors();

它將減少不少乏味的程式碼。

21. HTMLPurifier – HTML XSS 防護

HTMLPurifier是一個HTML過濾庫,透過強大的白名單和聚集分析,保護你程式碼遠離XSS攻擊。它還確保輸出標記符合標準。 (源碼在github上)

3);

1

2

3

4

5

4

HTMLPurifier.auto.php' ;

$config

= HTMLPurifier_Config::createDefault();

$purifier

$clean_html= $purifier->purify(

$dirty_html

););

);

5它已經支援並且可以操控所有主流顏色格式了
的話這個庫的時候了。

22. ColorJizz-PHP – 顏色操控庫

ColorJizz是一個簡單的庫,借助它你可以轉換不同的顏色格式,並且做簡單的顏色運算

3

4

6

7

useMischiefCollectiveorJizzizzcom newHex(0xFF0000);

$red_cmyk = $hex->toCMYK();

echo$red_cmyk; ::fromString( 'red')->hue(-20)->greyscale();

// 555555// 555555

23. PHP Geo Geo – 將座標之間高精度距離。例如:

1

2

3

它將在使用地理位置資料的app中出色工作。你可以試譯 HTML5 Location API,雅虎的API(或兩者都用,我們在weather web app tutorial中這樣做了),來取得座標。

24. ShellWrap – 優美的命令列包裝器

借助 ShellWrap 函式庫,你可以在PHP程式碼裡使用強大的 Linux/Unix 命令列工具。

4

5

6

4

5 use

LocationCoordinate;

use

LocationDistanceVincenty;

$coordinate1= new

Coordinate(19.820664, -155.4680666); $coordinate2=

new

Coordinate(20.709722, -156.253333); // Haleakala Summit$calculator= at =

$calculator->getDistance ($coordinate1, $coordinate2);

// returns 128130.850 (meters; ≈128 kilometers)

MrRioShellWrap

1

2

3

4

5

6

4

58

11

12

13

14

15

16

17

18

19

20

21

22

22233 7

require

'ShellWrap.php '

;

use

as

sh;

//檢出一個git分支sh::git('checkout',

'master');

//你也可以透過管道把一個指令的輸出用戶另一個指令

//下面透過curl過濾位置,然後透過grep'html'管道來過濾下載example.com網站

echosh::grep('html', sh::curl('http://example.com', sh::curl(

'http://example.com'

, sh::curl('http://example.com'

, sh::curl(

'http://example.com', sh::curl(

'http://example.com', , array(    'location'=> true

sh::touch('file .html');

//移除檔案

sh::rm(

'file.html'

); //再次移除檔案(這次失敗了,然後因為檔案不存在而拋出異常)

try

{

 html');

}

catch

(Exception $e

) { sh::rm() call'

; }

當命令列發生異常時,這個庫拋出異常,所以你可以及時對之做出反應。它也可以透過管道讓你一個命令的輸出作為另一個命令的輸入,來實現更強的靈活性。 以上就介紹了PHP開發者應了解的24個函式庫,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

我後悔之前不知道的 7 個 PHP 函數 我後悔之前不知道的 7 個 PHP 函數 Nov 13, 2024 am 09:42 AM

如果您是經驗豐富的PHP 開發人員,您可能會感覺您已經在那裡並且已經完成了。操作

您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

php程序在字符串中計數元音 php程序在字符串中計數元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? 什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

See all articles