首頁  >  文章  >  後端開發  >  PHP開發者應了解的24個函式庫

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

WBOY
WBOY原創
2016-08-08 09:26:20954瀏覽

作為一個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