PHP 開発者にとって、今は素晴らしい時代です。 Github では、簡単に見つけて使用できる便利なライブラリが毎日大量に配布されています。以下に、私がこれまで出会った中で最もクールなライブラリを 24 個紹介します。あなたのお気に入りの図書館がこのリストに載っていませんか?コメントでシェアしてください!
1. Dispatch – マイクロフレームワーク
Dispatch は小さな PHP フレームワークです。完全な MVC セットアップは提供されませんが、URL ルールとメソッドを定義してアプリケーションをより適切に編成できます。これは、API、単純なサイト、またはプロトタイプに最適です。
1
2
3
4
5
6
7
8
9
10 11
12
13
14
15. あなたのルート
get (
'/greet'
| ,
function
//包含库
include 'dispatch.php' ;
// 定义你的路由
get( '/greet' () {
function () {
//渲染视图
render( 'greet-form' );
});
//post处理
post( '/greet'
function () {
$name = from( $_POST //レンダリングビュー
'name' );
// render a view while passing some locals
render( 'greet-show' array ( 'name' => $name ));
});
// serve your site
dispatch();
|
你可以匹配特定类型的HTTP请求和路径,渲染视图或做更多事情。如果你合并Dispatch和其他框架,那你就可以拥有一个相当强大并且轻量级的程序!
2. Klein – PHP快如闪电的路由
Klein是另一款针对PHP5.3+版本的轻量级路由库。虽然它有一些比Dispatch冗长的语法,但它相当快。这有一个例子:
1
2
3
|
respond( '/[:name]' render( '挨拶フォーム'function ( $request ) {
echo 'Hello ' . $request ->name;
});
|
你也可以定制来指定HTTP方法和使用正则表达式作为路径。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
respond( 'GET' ); '/posts' , $callback );
respond( 'POST' }); '/posts/create' , $callback );
respond( 'PUT'
'/posts/[i:id]' , $callback );
respond( 'DELETE' //後処理
'/posts/[i:id]' , $callback );
//匹配多种请求方法:
respond( array ( 'POST' , 'GET' post( $route , $callback );
//你或许也想在相同的地方处理请求
respond( '/posts/[create|edit:action] /[i:id] ' '/greet' ,
function ( $request 関数 $response ) {
switch ( $request ->action) {
// do something
}
}); () {
|
$name🎜🎜= from(🎜🎜$_POST🎜🎜,
🎜🎜'name'🎜🎜);🎜🎜🎜🎜🎜🎜// いくつかのローカルを通過しながらビューをレンダリングします🎜🎜🎜🎜 🎜🎜render(🎜🎜'greet-show'🎜🎜,
🎜🎜array🎜🎜(🎜🎜'name'🎜🎜=> 🎜🎜$name🎜🎜));🎜🎜🎜🎜});🎜🎜🎜🎜// あなたのサイトを提供します🎜🎜🎜🎜 ();🎜 🎜🎜🎜🎜🎜🎜🎜🎜🎜 特定の種類の HTTP リクエストとパスを照合したり、ビューをレンダリングしたり、その他のことを行うことができます。 Dispatch を他のフレームワークと組み合わせると、非常に強力で軽量なプログラムを作成できます。 🎜🎜2. Klein – PHP 用の超高速ルーティング 🎜🎜Klein は、PHP5.3+ 用のもう 1 つの軽量ルーティング ライブラリです。 Dispatch よりも構文がやや冗長ですが、非常に高速です。以下に例を示します: 🎜🎜🎜🎜🎜🎜🎜🎜1🎜🎜2🎜🎜3🎜🎜🎜🎜🎜🎜respond(🎜🎜'/[:name]'🎜🎜,
🎜🎜function🎜🎜(🎜🎜$request🎜🎜) {🎜🎜🎜🎜 🎜🎜echo🎜🎜'こんにちは'🎜🎜$request🎜🎜->name;🎜。 🎜🎜🎜});🎜🎜🎜 🎜🎜🎜🎜🎜🎜🎜 HTTP メソッドを指定し、パスに正規表現を使用するようにカスタマイズすることもできます。 🎜🎜🎜🎜🎜🎜🎜🎜1🎜🎜2🎜🎜3🎜🎜4🎜🎜5🎜🎜6🎜🎜7🎜🎜8🎜🎜9🎜🎜10🎜 🎜11🎜🎜12🎜🎜13🎜🎜14🎜🎜 🎜🎜🎜🎜respond(🎜🎜'GET'🎜🎜,
🎜🎜'/posts'🎜🎜, 🎜🎜$callback🎜🎜);🎜🎜🎜🎜respond(🎜🎜'POST'🎜🎜,
🎜🎜'/posts/create'🎜🎜, 🎜🎜$callback🎜🎜);🎜🎜🎜🎜respond(🎜🎜'PUT'🎜🎜,
🎜🎜'/posts/[i:id]'🎜🎜, 🎜🎜$callback🎜🎜);🎜🎜🎜🎜respond(🎜🎜'DELETE'🎜🎜,
🎜🎜'/posts/[i:id]'🎜🎜, 🎜🎜$callback🎜🎜);🎜🎜🎜🎜//複数のリクエストメソッドに一致します 🎜🎜🎜🎜respond(🎜🎜array🎜🎜(🎜🎜) ' ポスト「🎜🎜、🎜🎜「GET」🎜🎜)、
🎜🎜$route🎜🎜, 🎜🎜$callback🎜🎜);🎜🎜🎜🎜//同じ場所でリクエストを処理することもできます🎜🎜🎜🎜respond(🎜🎜'/posts/[create|edit:action ] /[i:id] '🎜🎜、
🎜🎜関数🎜🎜(🎜🎜$リクエスト🎜🎜,
🎜🎜$response🎜🎜) {🎜🎜🎜🎜 🎜🎜switch🎜🎜(🎜🎜$request🎜🎜->action) {🎜🎜🎜🎜 🎜🎜/ /何かをしてください🎜🎜🎜🎜 🎜🎜}🎜🎜🎜🎜});🎜🎜🎜🎜🎜🎜🎜
これは小規模なプロジェクトには最適ですが、このようなライブラリを大規模なアプリケーションで使用する場合は、コードがすぐに保守不能になる可能性があるため、ルールに従う必要があります。したがって、Laravel や CodeIgniter のような完全に成熟したフレームワークを使用する方がよいでしょう。
3. Ham – キャッシュを備えたルーティング ライブラリ
Ham も軽量のルーティング フレームワークですが、さらに高速な速度を実現するためにキャッシュを使用します。これは、XCache/APC に関連するすべての I/O をキャッシュすることによって行われます。以下に例を示します。
11
1213
14
15
16
17
18
require
'../ham/ham.php'
;
$app
=
新しい Ham(
'example'
);
| $app
->config_from_file(
require '../ham/ham.php' ;
$app = new Ham( 'example' );
$app ->config_from_file( 'settings.php' );
$app ->route( '/pork' 'settings.php' );function ( $app ) {
return "Delicious pork." ;
});
$hello = function ( $app
$name = 'world' ) {
return $app ->render( 'hello.html' $app ->ルート(array (
'name' => $name
));
};
$app ->route( '/hello/<string>' '/豚肉' $hello );
$app ->route( '/' 、
function$hello );
$app ->run();
|
这个库要求你至少安装了XCache和APC其中的一个,这可能意味着,在大多数主机提供商提供的主机上它可能用不了。但是如果你拥有一个安装它们其一的主机,或者你可以操控你的web服务器,你应该尝试这款最快的框架。
4. Assetic – 资源管理
Assetic是一个PHP的资源管理框架,用于合并和减小了CSS/JS资源。下面是例子。
1
2
3
4
5
6
7
8
9
10
11
|
use AsseticAssetAssetCollection;
use AsseticAssetFileAsset;
use AsseticAssetGlobAsset;
$js = new AssetCollection( array (
new GlobAsset( '/path/to/js/*' ),
new FileAsset( '/path/to/another.js' ),
));
//当资源被输出时,代码会被合并
echo $js ->dump(); ( | $app
) {
🎜🎜🎜 🎜🎜return🎜🎜「おいしい豚肉。」🎜🎜;🎜🎜🎜🎜});🎜🎜 🎜 🎜$hello🎜🎜= 🎜🎜関数🎜🎜(🎜🎜$アプリ🎜🎜,
🎜🎜$name🎜🎜=🎜🎜'world'🎜🎜) {🎜🎜🎜🎜 🎜🎜return🎜🎜$app🎜🎜->render(🎜🎜'hello.html'🎜🎜,
🎜🎜array🎜🎜(🎜🎜🎜🎜 ) 🎜🎜'name'🎜🎜=> 🎜🎜$name🎜🎜🎜🎜)) 🎜};🎜🎜🎜🎜$app🎜🎜 ->ルート(🎜🎜' /hello/'🎜🎜、
🎜🎜$hello🎜🎜);🎜🎜🎜🎜$app🎜🎜->route(🎜🎜'/'🎜🎜,
🎜🎜$hello🎜🎜);🎜🎜🎜🎜$app🎜🎜->run();🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜このライブラリでは、XCache と APC の少なくとも 1 つがインストールされている必要があります。ただし、ほとんどのホスティングプロバイダーでは機能しない可能性があります。ただし、これらのいずれかがインストールされているホストがある場合、または Web サーバーを制御できる場合は、この最速のフレームワークを試してください。 🎜🎜4. Assetic - リソース管理 🎜🎜Assetic は、CSS/JS リソースをマージおよび削減するための PHP リソース管理フレームワークです。以下に例を示します。 🎜🎜🎜🎜🎜🎜🎜🎜1🎜🎜2🎜🎜3🎜🎜4🎜🎜5🎜🎜6🎜🎜7🎜🎜8🎜🎜9🎜🎜10🎜 🎜11🎜🎜🎜🎜🎜🎜use🎜🎜AsseticAssetAssetCollection; 🎜🎜🎜🎜use🎜🎜AsseticAssetFileAsset;🎜🎜🎜🎜use🎜🎜AsseticAssetGlobAsset;🎜🎜🎜🎜$js🎜🎜= 🎜🎜new🎜🎜AssetCollection( 🎜🎜配列🎜🎜(🎜🎜🎜🎜) 🎜🎜新しい🎜🎜 GlobAsset (🎜🎜'/path/to/js/*'🎜🎜),🎜🎜🎜🎜 🎜🎜new🎜🎜FileAsset(🎜🎜'/path/to/another.js'🎜🎜),🎜🎜🎜 🎜)) ;🎜🎜🎜🎜//リソースが出力されると、コードがマージされます🎜🎜🎜🎜echo🎜🎜$js🎜🎜->dump();🎜🎜🎜🎜🎜🎜🎜
この方法でリソースを組み合わせると、サイトの速度が向上するため、良いアイデアになります。総ダウンロード量が削減されるだけでなく、多数の不要な HTTP リクエストも削除されます (これら 2 つはページの読み込み時間に最も影響します)
5. ImageWorkshop – レイヤーを使用した画像処理
ImageWorkshop は、次のツールです。レイヤー化された画像のオープンソース ライブラリを制御できます。これを使用すると、サイズ変更、トリミング、サムネイルの作成、透かしなどを行うことができます。以下に例を示します。
11
// Norway.jpg 画像からノルウェー レイヤーを初期化します
$norwayLayer
= ImageWorkshop::initFromPath(
'/path/to/images/norway.jpg'
);
//watermark.png画像からウォーターマークレイヤー(ウォーターマークレイヤー)を初期化します
$watermarkLayer
= ImageWorkshop::initFromPath(
| '/path/to/images/watermark.png'
);
// 从norway.jpg图片初始化norway层
$norwayLayer = ImageWorkshop::initFromPath( '/path/to/images/norway.jpg' $image
= // 从watermark.png图片初始化watermark层(水印层)
$watermarkLayer = ImageWorkshop::initFromPath( '/path/to/images/watermark.png' $norwayLayer ->getResult();
$image = $norwayLayer // これが生成された画像です!
// 这是生成的图片!
header( 'Content-type: image/jpeg' );
imagejpeg( $image header( // We choose to show a JPG with a quality of 95%
exit ;
|
ImageWorkshop被开发用于使一些PHP中最通用的处理图片的案例简化,如果你需要一些更强大的东西,你应该看下Imagine library!
6. Snappy – 快照/PDF库
Snappy是一个PHP5库,可以生成快照、URL、HTML、PDF。它依赖于wkhtmltopdf binary(在Linux,Windows和OSX上都可用)。你可以像这样使用它们:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
require_once '/path/to/snappy/src/autoload.php' 'Content-type: image/jpeg' );
use KnpSnappyPdf;
//通过wkhtmltopdf binary路径初始化库
$snappy = new Pdf( '/usr/local/bin/wkhtmltopdf' imagejpeg( $image//通过把Content-type头设置为pdf来在浏览器中展示pdf
header( 'Content-Type: application/pdf' );
header( 'Content-Disposition: attachment; filename="file.pdf"' , null, 95);
// 品質 95% の JPG を表示することを選択します
echo $snappy ->getOutput( 'http://www.github.com' );
|
要记得,你的主机提供商可能不允许调用外部二进制程序。
7. Idiorm – 轻量级ORM库
Idiorm是个人之前在本网站教程中用过最喜爱的一款。它是一款轻量级的ORM库,一个建立在PDO之上的PHP5查询构造器。借助它,你可以忘记如何书写乏味的SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
$user = ORM::for_table( 'user' )
->where_equal( 'username' exit 'j4mie' )
->find_one();
$user ;
'Jamie' ;
$user ->save();
$tweets = ORM::for_table( 'tweet' )
->select( 'tweet.*' )
->join( 'user'
array (
'user.id'
'=' , 'tweet.user_id'
))
->where_equal( 'user.username' ImageWorkshop は、PHP Simplified で最も汎用性の高い画像処理ケースのいくつかを可能にするために開発されました、より強力なものが必要な場合は、Imagine ライブラリをチェックしてください。 'j4mie' )
->find_many();
foreach ( $tweets as $tweet ) {
echo $tweet ->text;
} 6. Snappy - スナップショット/PDF ライブラリ Snappy は、スナップショット、URL、HTML、PDF を生成できる PHP5 ライブラリです。これは、wkhtmltopdf バイナリ (Linux、Windows、および OSX で利用可能) に依存しています。次のように使用できます: |
11
12🎜 🎜13🎜🎜🎜🎜🎜🎜require_once🎜🎜'/path/to/snappy/src/autoload.php'🎜🎜;
🎜🎜🎜🎜use🎜🎜KnpSnappyPdf; 🎜🎜🎜🎜//wkhtmltopdfバイナリパスを通じてライブラリを初期化します🎜🎜🎜🎜$snappy🎜🎜= 🎜🎜new🎜🎜Pdf(🎜) 🎜'/usr/local/bin/wkhtmltopdf' 🎜 🎜);
🎜🎜🎜🎜//Content-type ヘッダーを pdf に設定して、ブラウザーに PDF を表示します🎜🎜🎜🎜header(🎜🎜'Content-Type: application/pdf'🎜🎜);🎜🎜🎜🎜header(🎜 🎜'コンテンツの配置: 添付ファイル名 = "file.pdf"'🎜🎜);
🎜🎜🎜🎜echo🎜🎜$snappy🎜🎜->getOutput(🎜🎜'http://www.github.com'🎜🎜);🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 ホストさん、覚えておいてくださいベンダーが提供できるもの外部バイナリへの呼び出しを許可しません。 🎜🎜7. Idiorm - 軽量 ORM ライブラリ 🎜🎜Idiorm は、以前この Web サイトのチュートリアルで使用した私のお気に入りです。これは軽量の ORM ライブラリであり、PDO 上に構築された PHP5 クエリ ビルダーです。これを使用すると、退屈な SQL の書き方を忘れることができます: 🎜🎜🎜🎜🎜🎜🎜🎜1🎜🎜2🎜🎜3🎜🎜4🎜🎜5🎜🎜6🎜🎜7🎜🎜8🎜🎜9🎜 🎜10🎜🎜 11🎜🎜12🎜🎜13🎜🎜14🎜🎜15🎜🎜16🎜🎜17🎜🎜18🎜🎜🎜🎜🎜🎜$user🎜🎜= ORM::for_table(🎜) 🎜「ユーザー」🎜🎜)🎜🎜🎜🎜 🎜🎜->where_equal(🎜🎜'ユーザー名'🎜🎜,
🎜🎜'j4mie'🎜🎜)🎜🎜🎜🎜 🎜🎜->find_one();🎜🎜🎜🎜$user🎜🎜->first_name =
🎜🎜'ジェイミー'🎜🎜;🎜🎜🎜🎜$user🎜🎜->save();🎜🎜🎜🎜$tweets🎜🎜= ORM::for_table(🎜🎜'ツイート'🎜🎜)🎜 🎜🎜🎜 🎜 🎜->select(🎜🎜'tweet.*'🎜🎜)🎜🎜🎜🎜 🎜🎜->join(🎜🎜'user'🎜🎜,
🎜🎜配列🎜🎜(🎜🎜🎜🎜
🎜🎜'='🎜🎜, 🎜🎜'tweet.user_id'🎜🎜🎜🎜ここで、🎜🎜、
🎜🎜'j4mie'🎜🎜)🎜🎜🎜🎜 🎜🎜->find_many();🎜🎜🎜🎜foreach🎜🎜(🎜🎜$ツイート🎜🎜as🎜🎜$ツイート🎜🎜) {🎜🎜🎜🎜 🎜🎜 echo🎜🎜$tweet🎜🎜->text;🎜🎜🎜🎜}🎜🎜🎜🎜🎜🎜🎜
Idiorm には Paris と呼ばれる姉妹ライブラリがあり、これは Idiorm に基づいた Active Record 実装です。
8. Underscore - PHP 用のツール ベルト
Underscore は、JavaScript アプリケーション用のツール ベルトであるオリジナルの Underscore.js へのインターフェイスです。 PHP バージョンは期待を裏切らず、ほぼすべてのネイティブ機能をサポートしています。いくつかの例を次に示します。
11
1213
(1, 2, 3),
関数($num) {
エコー$num。'、';
// 1,2,3, |
$multiplier__::each( array = 2; function ( $num
echo $num . ',' (1, 2, 3),
関数// 1,2,3,
$multiplier = 2;
__::each( array ( function ( $num $num ,
$index ) use ( $multiplier ) {
echo $index . '=' . ( $num * $multiplier $index ',' ;
});
// prints: 0=2,1=4,2=6,
__::reduce( array ) usefunction ( $memo ( $num ) { return $memo + $num $multiplier ) {// 6
__::find( array
function ( $num echoreturn $num % 2 === 0; }); // 2
__::filter( array $index function ( $num '=' return $num % 2 === 0; }); // array(2, 4)
|
这个库也支持链式语法,这使得它更为强大。
9. Requests – 简单HTTP请求
Requests是一个简化HTTP请求的库。如果你和我一样,几乎从来都记不住传递给Curl的各种各样的参数,那么它就是为你准备的:
1
2
3
4
5
6
7
8
9
10
11
12
|
$headers = array ( 'Accept' => 'application/json' );
$options = array ( 'auth' => array ( 'user' ( 'pass' ));
$request = Requests::get( 'https://api.github.com/gists' $num ) * $headers , $options );
var_dump( $request ->status_code);
// int(200)
var_dump( $request ->headers[ 'content-type' ]);
// string(31) "application/json; charset=utf-8"
var_dump( $request ->body);
// string(26891) "[…]"
|
借助这个库,你可以发送HEAD、GET、POST、PUT、DELTE和PATCH HTTP请求,你可以通过数组添加文件和参数,并且可以访问所有相应数据。
10. Buzz – 简单的HTTP请求库
Buzz是另一个完成HTTP请求的库。下面是一个例子:
1
2
3
4
5
6
7
8
|
$request = new BuzzMessageRequest( 'HEAD' $乗数 '/' , 'http://google.com' );
$response = new BuzzMessageResponse();
$client = new BuzzClientFileGetContents();
$client ->send( $request ) 。
','$response );
echo $request ;
echo $response ; ; |
});
🎜🎜🎜// 出力: 0=2,1=4,2=6,🎜🎜🎜🎜__::reduce(🎜🎜array🎜🎜( 1、2、3)、
🎜🎜関数🎜🎜(🎜🎜$メモ🎜🎜,
🎜🎜$num🎜🎜) { 🎜🎜return🎜🎜$memo🎜🎜+ 🎜🎜$num🎜🎜 }, 0);
🎜🎜// 6🎜🎜🎜🎜__::find(🎜🎜配列🎜🎜(1, 2, 3, 4),
🎜🎜関数🎜🎜(🎜🎜$num🎜🎜) {
🎜🎜return🎜🎜$num🎜🎜% 2 === 0; }); 🎜🎜// 2🎜🎜🎜__::filter(🎜🎜array🎜🎜(1, 2, 3, 4),
🎜🎜関数🎜🎜(🎜🎜$num🎜🎜) {
🎜🎜return🎜🎜$num🎜🎜% 2 === 0; }); 🎜🎜// array(2, 4)🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜このライブラリは、チェーン構文もサポートしています。強力な。 🎜🎜9. リクエスト - 単純な HTTP リクエスト 🎜🎜Requests は、HTTP リクエストを簡素化するライブラリです。あなたも私と同じで、Curl に渡されるさまざまなパラメーターをほとんど覚えていない場合は、これが最適です: 🎜🎜🎜🎜🎜🎜🎜🎜1🎜🎜2🎜🎜3🎜🎜4🎜 🎜5🎜🎜6🎜🎜 7🎜🎜8🎜🎜9🎜🎜10🎜🎜11🎜🎜12🎜🎜🎜🎜🎜🎜$headers🎜🎜= 🎜🎜配列🎜 🎜(🎜🎜'受け入れる'🎜) 🎜=> 🎜🎜'アプリケーション/json' 🎜🎜);🎜🎜🎜🎜$options🎜🎜= 🎜🎜array🎜🎜(🎜🎜'auth'🎜🎜=> 🎜🎜array🎜🎜(🎜 🎜'user'🎜) 🎜、
🎜🎜'パス'🎜🎜));🎜🎜🎜🎜$request🎜🎜= リクエスト::get(🎜🎜'https://api.github.com/gists'🎜🎜,
🎜🎜$headers🎜🎜, 🎜🎜$options🎜🎜);🎜🎜🎜🎜var_dump(🎜🎜$request🎜🎜->status_code);🎜🎜🎜🎜// 🎜🎜🎜var_dump(🎜 🎜$request🎜🎜->headers[🎜🎜'content-type'🎜🎜]);🎜🎜🎜🎜// string(31) "application/json; charset=utf-8"🎜🎜🎜🎜var_dump(🎜) 🎜$request🎜🎜->body);🎜🎜🎜🎜// string(26891) "[…]"🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 このライブラリを使用すると、HEAD、GET、 POST、PUT、DELTE、PATCH HTTP リクエストでは、配列を介してファイルとパラメータを追加し、対応するすべてのデータにアクセスできます。 🎜🎜10. Buzz – シンプルな HTTP リクエスト ライブラリ 🎜🎜Buzz は、HTTP リクエストを完了する別のライブラリです。以下に例を示します。 🎜$リクエスト🎜🎜= 🎜🎜新規🎜 🎜BuzzMessageRequest(🎜🎜'HEAD'🎜🎜,
🎜🎜'/'🎜🎜, 🎜🎜'http://google.com'🎜🎜);🎜🎜🎜🎜$response🎜🎜= 🎜🎜new🎜🎜BuzzMessageResponse();🎜🎜🎜🎜$client 🎜🎜 = 🎜🎜new🎜🎜BuzzClientFileGetContents();🎜🎜🎜🎜$client🎜🎜->send(🎜🎜$request🎜🎜,
🎜🎜$response🎜🎜);🎜🎜🎜🎜echo🎜🎜$request🎜🎜;🎜🎜🎜🎜echo🎜🎜$response🎜🎜;🎜🎜🎜🎜 🎜 🎜🎜
ドキュメントが不足しているため、サポートされているすべてのパラメーターを知るにはソースコードを読む必要があります。
11. Goutte – Web スクレイピング ライブラリ
Goutte は、Web サイトをクローリングしてデータを抽出するためのライブラリです。リモート ページから特定の要素を簡単に選択できるエレガントな API を提供します。
1
2
3
4
5
6
7
8
9
10 11
12
13
14
15
|
require_once '/path/to/goutte.phar' ;
use GoutteClient;
$client = new Client();
$crawler = $client ->request( 'GET' require_once '/path/to/goutte.phar''http://www.symfony-project.org/'
use//点击链接
$link = $crawler ->selectLink( 'Plugins' )->link();
$crawler = $client ->click( $link $client; =
新しい//使用一个类CSS语法提取数据
$t = $crawler ->filter( '#data' クライアント();
echo "Here is the text: $t" ;
|
12. Carbon – DateTime 库
Carbon 是 DateTime API 的一个简单扩展。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
printf( "Right now is %s" , Carbon::now()->toDateTimeString());
printf( "Right now in Vancouver is %s" , Carbon::now( 'America/Vancouver' ));
$tomorrow = Carbon::now()->addDay();
$lastWeek = Carbon::now()->subWeek();
$nextSummerOlympics = Carbon::createFromDate(2012)->addYears(4);
$officialDate = Carbon::now()->toRFC2822String();
$howOldAmI = Carbon::createFromDate(1975, 5, 21)->age;
$noonTodayLondonTime = Carbon::createFromTime(12, 0, 0, 'Europe/London' );
$endOfWorld = Carbon::createFromDate(2012, 12, 21, 'GMT' );
//总是以UTC对比
if (Carbon::now()->gte( $endOfWorld )) {
die ();
}
if (Carbon::now()->isWeekend()) {
echo 'Party!' ;
}
echo Carbon::now()->subMinutes(2)->diffForHumans(); // '2分钟之前' $クローラー = |
$クライアント
->リクエスト(🎜🎜'GET'🎜🎜,
🎜🎜'http://www.symfony-project.org/'🎜🎜);
🎜🎜🎜🎜//リンクをクリック🎜🎜🎜🎜$link🎜🎜= 🎜🎜$crawler🎜🎜->selectLink(🎜🎜'プラグイン'🎜🎜)->link();🎜🎜🎜 🎜$クローラー🎜 🎜= 🎜🎜$クライアント🎜🎜->click(🎜🎜$link🎜🎜);
🎜🎜🎜🎜// CSS のような構文を使用してデータを抽出します 🎜🎜🎜🎜$t🎜🎜= 🎜🎜$crawler🎜🎜->filter(🎜🎜'#data'🎜🎜)->text() ;
🎜🎜🎜🎜echo🎜🎜"ここにテキストがあります: $t"🎜🎜;🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 12. Carbon - DateTime ライブラリ 🎜🎜Carbon は DateTime API の単純な拡張機能です。 🎜🎜🎜🎜🎜🎜🎜🎜1🎜🎜2🎜🎜3🎜🎜4🎜🎜5🎜🎜6🎜🎜7🎜🎜8🎜🎜9🎜🎜10🎜 🎜11🎜🎜12🎜🎜13🎜🎜14🎜🎜 15🎜🎜16🎜🎜17🎜🎜18🎜🎜19🎜🎜20🎜🎜21🎜🎜22🎜🎜23🎜🎜24🎜🎜25🎜🎜🎜🎜 🎜🎜printf(🎜🎜「今は%sです」🎜🎜 , Carbon::now()->toDateTimeString());🎜🎜🎜🎜printf(🎜🎜「現在バンクーバーは %s です」🎜🎜, Carbon::now(🎜🎜'アメリカ/バンクーバー'🎜🎜) );🎜🎜🎜🎜$tomorrow🎜🎜= Carbon::now()->addDay();🎜🎜🎜🎜$lastWeek🎜🎜= Carbon::now()->subWeek();🎜🎜🎜🎜 $nextSummerOlympics🎜🎜= Carbon::createFromDate(2012)->addyears(4);🎜🎜🎜🎜$officialDate🎜🎜= Carbon::now()->toRFC2822String();🎜🎜🎜🎜$howOldAmI🎜 🎜 = Carbon::createFromDate(1975, 5, 21)->年齢;🎜🎜🎜🎜$noonTodayLondonTime🎜🎜= Carbon::createFromTime(12, 0, 0, 🎜🎜'ヨーロッパ/ロンドン'🎜🎜);🎜🎜 🎜🎜$endOfWorld🎜🎜= Carbon::createFromDate(2012, 12, 21, 🎜🎜'GMT'🎜🎜);🎜🎜🎜🎜//常に UTC と比較します🎜🎜🎜🎜if🎜🎜(Carbon::今( )->gte(🎜🎜$endOfWorld🎜🎜)) {🎜🎜🎜🎜 🎜🎜die🎜🎜();🎜🎜🎜🎜}🎜🎜🎜🎜if🎜🎜(Carbon::now() gt;は週末です()) {🎜🎜🎜🎜 🎜🎜echo🎜🎜'Party!'🎜🎜;🎜🎜🎜🎜}🎜🎜🎜🎜echo🎜🎜Carbon::now()->subMinutes(2 )->d iffForHumans ( ); 🎜🎜// '2分前'🎜🎜🎜🎜🎜🎜🎜
13. Ubench – マイクロベンチマークライブラリ
Ubench は、PHP コードのベンチマーク、(コード) 実行時間とメモリ使用量の監視のためのマイクロ ライブラリです。以下に例を示します。
11
1213 14
15
16
17
18
19
20
21
use
UbenchUbench;
$bench
=
新しい
Ubench ;
$bench
->start();
| //コードを実行
use UbenchUbench;
$bench = new Ubench;
$bench ->start();
//执行一些代码
$bench -> end ();
//获取执行消耗时间和内存
echo $bench ->getTime(); // 156ms or 1.123s
echo $bench ->getTime(true); // elapsed microtime in float
echo $bench ->getTime(false, '%d%s' $bench ->// 156ms or 1s
echo $bench ->getMemoryPeak(); // 152B or 90.00Kb or 15.23Mb
echo $bench ->getMemoryPeak(true); // memory peak in bytes 内存峰值
echo $bench ->getMemoryPeak(false, '%.3f%s' end // 152B or 90.152Kb or 15.234Mb
//在结束标识处返回内存使用情况
echo $bench ->getMemoryUsage(); // 152B or 90.00Kb or 15.23Mb
|
(仅)在开发时运行这些校验是一个好主意。
14. Validation – 输入验证引擎
Validation 声称是PHP库里最强大的验证引擎。但是,它能名副其实吗?看下面:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
use RespectValidationValidator as v;
//简单验证
$number = 123;
v::numeric()->validate( $number (); //true
//链式验证
$usernameValidator = v::alnum()->noWhitespace()->length(1,15);
$usernameValidator ->validate( 'alganet' //実行時間とメモリを取得する //true
//验证对象属性
$user = new stdClass;
$user echo'Alexandre' ;
$user $bench '1987-07-01' ;
//在一个简单链中验证他的属性
$userValidator = v::attribute( 'name' , v::string()->length(1,32))
->attribute( 'birthdate' , v:: date ->getTime(); // 156ms または 1.123s
$userValidator ->validate( $user echo //true
|
你可以通过这个库验证你的表单或其他用户提交的数据。除此之外,它内置了很多校验,抛出异常和定制错误信息。
15. Filterus – 过滤库
Filterus是另一个过滤库,但它不仅仅可以验证,也可以过滤匹配预设模式的输出。下面是一个例子:
1
2
3
4
5
|
$f = Filter::factory( 'string,max:5' );
$str = 'This is a test string' $bench ->getTime (本当);
// float での経過マイクロタイム$f ->validate( $str
// false
$f ->filter( $str echo $bench// 'This ' ->getTime(false, | '%d%s'
);
🎜// 156ms または 1s🎜🎜🎜🎜echo🎜🎜$bench🎜🎜->getMemoryPeak(); 🎜🎜// 152B または 90.00Kb または 15.23Mb🎜🎜🎜🎜eちょ🎜🎜$ベンチ🎜🎜-> getMemoryPeak(true); 🎜🎜// メモリ ピーク (バイト単位) メモリ ピーク 🎜🎜🎜🎜echo🎜🎜$bench🎜🎜->getMemoryPeak(false, 🎜🎜'%.3f%s'🎜🎜);
🎜🎜// 152B または 90.152Kb または 15.234Mb🎜🎜🎜🎜// 終了マークでメモリ使用量を返す 🎜🎜🎜🎜echo🎜🎜$bench🎜🎜->getMemoryUsage(); 🎜🎜 // 152B または 90.00 KBまたは 15.23Mb 🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 (のみ) 開発中にこれらのチェックを実行することをお勧めします。 🎜🎜14. 検証 – 入力検証エンジン🎜🎜Validation は、PHP ライブラリで最も強力な検証エンジンであると主張しています。しかし、それはその名に恥じないものでしょうか?以下をご覧ください: 🎜🎜🎜🎜🎜🎜🎜🎜1🎜🎜2🎜🎜3🎜🎜4🎜🎜5🎜🎜6🎜🎜7🎜🎜8🎜🎜9🎜🎜10 🎜🎜11🎜🎜12🎜🎜13🎜🎜 14🎜🎜15🎜🎜16🎜🎜17🎜🎜18🎜🎜19🎜🎜20🎜🎜🎜🎜🎜🎜use🎜🎜RespectValidationValidator🎜🎜を🎜として使用🎜v ; 🎜🎜🎜🎜//簡単な検証🎜🎜🎜🎜$number 🎜🎜= 123;🎜🎜🎜🎜v::numeric()->validate(🎜🎜$number🎜🎜);
🎜🎜//true 🎜🎜🎜🎜//チェーン検証🎜🎜🎜🎜$usernameValidator🎜🎜= v::alnum()->noWhitespace()->length(1,15);🎜🎜🎜🎜$ usernameValidator 🎜🎜->validate(🎜🎜'アルガネット'🎜🎜);
🎜🎜//true 🎜🎜🎜🎜//オブジェクトのプロパティを確認します 🎜🎜🎜🎜$user🎜🎜= 🎜🎜new🎜🎜stdClass;🎜🎜🎜🎜$user🎜🎜->name =
🎜🎜'アレクサンドル'🎜🎜;🎜🎜🎜🎜$user🎜🎜->生年月日 =
🎜🎜'1987-07-01'🎜🎜; 🎜🎜🎜🎜//単純なチェーンで属性を検証します🎜🎜🎜🎜$userValidator🎜🎜= v::attribute(🎜🎜'name'🎜🎜, v :: string()->length(1,32))🎜🎜🎜🎜 8 ));
🎜🎜🎜🎜$userValidator🎜🎜->validate(🎜🎜$user🎜🎜);
🎜🎜//true🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 このライブラリを通じて、フォームまたは他のユーザーが送信したデータを検証できます。さらに、多くの検証機能が組み込まれており、例外やカスタム エラー メッセージをスローします。 🎜🎜15. Filterus - フィルタリング ライブラリ 🎜🎜Filterus は別のフィルタリング ライブラリですが、事前に設定されたパターンに一致する出力を検証するだけでなくフィルタリングすることもできます。以下に例を示します: 🎜🎜🎜🎜🎜🎜🎜🎜1🎜🎜2🎜🎜3🎜🎜4🎜🎜5🎜🎜🎜🎜🎜🎜$f🎜🎜= Filter::factory(🎜) 🎜 '文字列、最大:5 '🎜🎜);🎜🎜🎜🎜$str🎜🎜= 🎜🎜'これはテスト文字列です'🎜🎜;
🎜🎜🎜🎜$f🎜🎜->validate(🎜🎜$str🎜🎜);
🎜🎜// false🎜🎜🎜🎜$f🎜🎜->filter(🎜🎜$str🎜🎜);
🎜🎜// 'これ'🎜🎜🎜🎜🎜🎜🎜
Filterus には多くの組み込みモードがあり、チェーンの使用をサポートし、独立した検証ルールを使用して配列要素を検証することもできます。
16. Faker - 偽データジェネレーター
Faker は偽データを生成する PHP ライブラリです。これは、テスト データベースにデータを入力する必要がある場合、または Web アプリケーションのテスト データを生成する必要がある場合に便利です。使い方もとても簡単です: 10
11
12 13
14
15
//参照 Faker autoloader
require_once
'/path/to/Faker/src/autoload.php'
;
// 使用するFakerGenerator インスタンスを作成するためのファクトリーの作成
$faker
= FakerFactory::create();
| //プロパティにアクセスして偽のデータを生成する
//引用Faker 自动加载器
require_once '/path/to/Faker/src/autoload.php' ;
//使用工厂创建来创建一个FakerGenerator实例
$faker = FakerFactory::create();
//通过访问属性生成假数据
echo $faker ->name; // 'Lucy Cechtelar';
echo $faker ->address;
// "426 Jordy Lodge
// Cartwrightshire, SC 88120-6700"
echo $faker ->text;
// Sint velit eveniet. Rerum atque repellat voluptatem quia ...
|
只要你继续访问对象属性,它将继续返回随机生成的数据。
17. Mustache.php – 优雅模板库
Mustache是一款流行的模板语言,实际已经在各种编程语言中得到实现。使用它,你可以在客户端或服务段重用模板。 正如你猜得那样,Mustache.php 是使用PHP实现的。
1
2
|
$m = new Mustache_Engine;
echo $m ->render( 'Hello {{planet}}' echo $fakerarray ( 'planet' => 'World!' -> ; // "Hello World!"
|
建议看一下官方网站Mustache docs 查看更多高级的例子。
18. Gaufrette – 文件系统抽象层
Gaufrette是一个PHP5库,提供了一个文件系统的抽象层。它使得以相同方式操控本地文件,FTP服务器,亚马逊 S3或更多操作变为可能。它允许你开发程序时,不用了解未来你将怎么访问你的文件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
use GaufretteFilesystem;
use GaufretteAdapterFtp as FtpAdapter;
use GaufretteAdapterLocal as LocalAdapter;
//本地文件:
$adapter = new LocalAdapter( '/var/media' // 'ルーシー・チェクテラール';
エコー//可选地使用一个FTP适配器 $faker->アドレス;
//初始化文件系统
$filesystem = new Filesystem( $adapter // "426 ジョーディ・ロッジ
//使用它
$content = $filesystem ->read( 'myFile' );
$content = 'Hello I am the new content' ;
$filesystem ->write( 'myFile' $content ); // カートライトシャー、SC 88120 -6700"
|
echo
$faker🎜🎜->text;🎜🎜🎜🎜🎜🎜//シント・ヴェリット・イブニエット。レルム・アトケ・リペルラ・ヴォリュプテム・キア…🎜🎜🎜🎜🎜 🎜🎜🎜🎜🎜としてオブジェクトのプロパティにアクセスし続ける限り、ランダムに生成されたデータが返され続けます。 🎜🎜17. Mustache.php - エレガントなテンプレートライブラリ🎜🎜Mustache は、実際にさまざまなプログラミング言語で実装されている人気のあるテンプレート言語です。これを使用すると、クライアントまたはサービス セグメントでテンプレートを再利用できます。 ご想像のとおり、Mustache.php は PHP を使用して実装されています。 🎜🎜🎜🎜🎜🎜🎜🎜1🎜🎜2🎜🎜🎜🎜🎜🎜$m🎜🎜= 🎜🎜new🎜🎜Mustache_Engine;🎜🎜🎜🎜echo 🎜🎜$m🎜🎜->render(🎜🎜'こんにちは{{惑星}}'🎜🎜、
🎜🎜array🎜🎜(🎜🎜'planet'🎜🎜=> 🎜🎜'World!'🎜🎜));
🎜🎜// "Hello World!"🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 さらに高度な例を確認するには、公式 Web サイトの Mustache ドキュメントを参照することをお勧めします。 🎜🎜18. Gaufrette – ファイル システム抽象化レイヤー🎜🎜 Gaufrette は、ファイル システムの抽象化レイヤーを提供する PHP5 ライブラリです。これにより、ローカル ファイル、FTP サーバー、Amazon S3 などを同じ方法で操作できるようになります。これにより、将来どのようにファイルにアクセスするかを知らなくてもプログラムを開発できます。 🎜🎜🎜🎜🎜🎜🎜🎜1🎜🎜2🎜🎜3🎜🎜4🎜🎜5🎜🎜6🎜🎜7🎜🎜8🎜🎜9🎜🎜10🎜 🎜11🎜🎜12🎜🎜13🎜🎜14🎜🎜 15🎜🎜16🎜🎜17🎜🎜🎜🎜🎜🎜GaufretteFilesystemを使用します;🎜🎜🎜🎜GaufretteAdapterFtpを🎜🎜として🎜🎜FtpAdapterとして使用します。 🎜🎜🎜🎜GaufretteAdapterLocal🎜🎜を🎜🎜LocalAdapterとして使用します。 🎜🎜//ローカルファイル:🎜🎜🎜🎜$adapter🎜🎜= 🎜🎜new🎜🎜LocalAdapter(🎜🎜'/var/media'🎜🎜);
🎜🎜🎜🎜//オプションで FTP アダプターを使用します🎜🎜🎜🎜// $ftp = new FtpAdapter($path, $host, $username, $password, $port);
🎜🎜🎜🎜//ファイルシステムを初期化します🎜🎜🎜🎜$filesystem🎜🎜= 🎜🎜new🎜🎜Filesystem(🎜🎜$adapter🎜🎜);
🎜🎜🎜🎜//使ってみよう🎜🎜🎜🎜$content🎜🎜= 🎜🎜$filesystem🎜🎜->read(🎜🎜'myFile'🎜🎜);🎜🎜🎜🎜$content🎜 🎜= 🎜🎜「こんにちは」私は新しいコンテンツです'🎜🎜;🎜🎜🎜🎜$filesystem🎜🎜->write(🎜🎜'myFile'🎜🎜,
🎜🎜$コンテンツ🎜🎜);🎜🎜🎜🎜🎜🎜🎜
キャッシュアダプターやメモリーアダプターもありますが、今後さらに追加される予定です。
19. Omnipay – 支払い処理ライブラリ
Omnipay は PHP 支払い処理ライブラリです。明確で一貫した API があり、数十のゲートウェイをサポートしています。このライブラリを使用すると、API を学習し、さまざまな支払いプロセッサを処理するだけで済みます。以下に例を示します。
11
1213
14
15
16
17
18
19
使用
オムニペイクレジットカード;
使用
オムニペイゲートウェイファクトリー;
$gateway
= ゲートウェイファクトリー:: create(
'ストライプ'
);
| $gateway
->setApiKey(
use OmnipayCreditCard;
use OmnipayGatewayFactory;
$gateway = GatewayFactory::create( 'Stripe' );
$gateway ->setApiKey( 'abc123' );
$formData = [ 'number' => '4111111111111111' 'abc123' );'expiryMonth'
'expiryYear' => 2016];
$response = $gateway ->purchase([ 'amount' => 1000, 'card' => $formData ]);
if ( $response ->isSuccessful()) {
//支付成功:更新数据库
print_r( $response );
} elseif ( $response ->isRedirect()) {
//跳转到异地支付网关
$response ->redirect();
} else {
//支付失败:向客户显示信息
exit ( $response ->getMessage());
}
|
使用相同一致的API,可以很容易地支持多种支付处理器,或在需要时进行切换。
20. Upload – 处理文件上传
Upload是一个简化文件上传和验证的库。上传表单时,这个库会校验文件类型和尺寸。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
$storage = new UploadStorageFileSystem( '/path/to/directory' );
$file = new UploadFile( 'foo' $formData = [$storage );
//验证文件上传
$file ->addValidations( array (
//确保文件类型是"image/png"
new UploadValidationMimetype( 'image/png' ),
//确保文件不超过5M(使用"B","K","M"或者"G")
new UploadValidationSize( '5M' )
));
//试图上传文件
try {
//成功
$file ->upload();
} catch (Exception $e ) {
//失败!
$errors = $file ->getErrors();
} 「番号」 | =>
'411111111111111'
🎜、
🎜🎜'有効期限'🎜🎜=>
🎜🎜'有効期限'🎜🎜=> 2016];🎜🎜🎜🎜$response🎜🎜= 🎜🎜$ゲートウェイ🎜🎜->購入([🎜🎜'金額'🎜🎜=> 1 0 00、🎜🎜」カード '🎜🎜=> 🎜🎜$formData🎜🎜]);🎜🎜🎜🎜if🎜🎜(🎜🎜$response🎜🎜->isSuccessful()) {🎜🎜🎜🎜🎜🎜 / /支払い成功: 更新データベース 🎜🎜🎜🎜 🎜🎜print_r(🎜🎜$response🎜🎜);🎜🎜🎜🎜} 🎜🎜elseif🎜🎜(🎜🎜$response🎜🎜->isRedirect ()) { 🎜🎜🎜🎜🎜🎜// Jump オフサイト支払いゲートウェイに移動します 🎜🎜🎜🎜 🎜🎜$response🎜🎜->redirect();🎜🎜🎜🎜} 🎜🎜else🎜🎜{🎜🎜🎜🎜🎜🎜//Payment失敗: 情報を表示しますお客様へ🎜🎜 🎜🎜 🎜🎜exit🎜🎜(🎜🎜$response🎜🎜->getMessage());🎜🎜🎜🎜}🎜🎜🎜🎜🎜🎜🎜🎜 🎜 🎜同じ一貫した API を使用すると、簡単です複数の支払いプロセッサをサポートするか、必要に応じて切り替えることができます。 🎜🎜20. アップロード – ファイルのアップロードの処理🎜🎜Upload は、ファイルのアップロードと検証を簡素化するライブラリです。フォームをアップロードするとき、このライブラリはファイルの種類とサイズを検証します。 🎜🎜🎜🎜🎜🎜🎜🎜1🎜🎜2🎜🎜3🎜🎜4🎜🎜5🎜🎜6🎜🎜7🎜🎜8🎜🎜9🎜🎜10🎜 🎜11🎜🎜12🎜🎜13🎜🎜14🎜🎜 15🎜🎜16🎜🎜17🎜🎜18🎜🎜19🎜🎜20🎜🎜🎜🎜🎜🎜$storage🎜🎜= 🎜🎜new🎜🎜UploadStorageFileSystem(🎜) 🎜'/パス/へ/ディレクトリ'🎜🎜);🎜🎜 🎜🎜$file🎜🎜= 🎜🎜new🎜🎜UploadFile(🎜🎜'foo'🎜🎜,
🎜🎜$storage🎜🎜);🎜🎜🎜🎜//ファイルのアップロードを確認🎜🎜🎜🎜$file🎜🎜->addValidations(🎜🎜array🎜🎜(🎜🎜🎜🎜🎜) 🎜//ファイルタイプが次であることを確認してください。 "image /png"🎜🎜🎜🎜 🎜🎜new🎜🎜UploadValidationMimetype(🎜🎜'image/png'🎜🎜),🎜🎜🎜🎜🎜🎜//ファイルが5Mを超えていないことを確認してください(「」を使用) B"、"K"、"M"、または "G")🎜🎜🎜🎜 🎜🎜new🎜🎜UploadValidationSize(🎜🎜'5M'🎜🎜)🎜🎜🎜🎜));🎜🎜🎜🎜//ファイルをアップロードしようとしています🎜🎜 🎜🎜try🎜🎜{🎜 🎜🎜🎜 🎜🎜//成功🎜🎜🎜🎜 🎜🎜$file🎜🎜->upload();🎜🎜🎜 🎜} 🎜🎜キャッチ🎜🎜(例外 🎜 🎜$e🎜🎜) {🎜🎜🎜🎜🎜 🎜//失敗しました! 🎜🎜🎜🎜 🎜🎜$errors🎜🎜= 🎜🎜$file🎜🎜->getError s();🎜🎜🎜🎜 }🎜🎜🎜🎜🎜🎜🎜
退屈なコードを大幅に削減します。
21. HTMLPurifier – HTML XSS 保護
HTMLPurifier は、強力なホワイトリストと集計分析を通じて XSS 攻撃からコードを保護する HTML フィルター ライブラリです。また、出力マークアップが標準に準拠していることも保証します。 (ソースコードはgithubにあります)
1
2
3
4
5
|
require_once '/path/to/HTMLPurifier.auto.php' ;
$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier( $config );
$clean_html = $purifier ->purify( $dirty_html );
|
如果你的网站允许用户提交 HTML 代码,不修改就展示代码的话,那这时候就是用这个库的时候了。
22. ColorJizz-PHP – 颜色操控库
ColorJizz是一个简单的库,借助它你可以转换不同的颜色格式,并且做简单的颜色运算
1
2
3
4
5
6
7
|
use MischiefCollectiveColorJizzFormatsHex;
$red_hex = new Hex(0xFF0000);
$red_cmyk = $hex ->toCMYK();
echo $red_cmyk ; // 0,1,1,0
echo Hex::fromString( 'red' require_once '/path/to /H TMLPurifier.auto.php '// 555555
|
它已经支持并且可以操控所有主流颜色格式了
23. PHP Geo – 地理位置定位库
phpgeo是一个简单的库,用于计算地理坐标之间高精度距离。例如:
1
2
3
4
5
6
7
8
|
use LocationCoordinate;
use LocationDistanceVincenty;
$coordinate1 = new Coordinate(19.820664, -155.468066); // Mauna Kea Summit 茂纳凯亚峰
$coordinate2 = new Coordinate(20.709722, -156.253333); // Haleakala Summit
$calculator = new Vincenty();
$distance = $calculator ->getDistance( $coordinate1 ; $coordinate2 ); // returns 128130.850 (meters; ≈128 kilometers) $config |
= HTMLPurifier_Config::createDefault();
🎜🎜$purifier🎜🎜= 🎜🎜new🎜🎜HTMLPurifier(🎜🎜$config🎜) 🎜);🎜 🎜🎜🎜$clean_html 🎜🎜= 🎜🎜$purifier🎜🎜->purify(🎜🎜$dirty_html🎜🎜);🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 Web サイトでユーザーが HTML コードを送信し、そのコードを変更せずに表示できる場合は、次のようになります。このライブラリを使用するときが来ました。 🎜🎜22. ColorJizz-PHP – カラー操作ライブラリ🎜🎜ColorJizz は、さまざまなカラー形式を変換し、簡単なカラー操作を行うことができるシンプルなライブラリです🎜🎜🎜🎜🎜🎜🎜🎜1🎜🎜2🎜🎜 3🎜🎜4🎜 🎜5🎜🎜6🎜🎜7🎜🎜🎜🎜🎜🎜使用🎜🎜MischiefCollectiveColorJizzFormatsHex;🎜🎜🎜🎜$red_hex🎜🎜= 🎜新しい🎜🎜 Hex(0xFF0000);🎜🎜🎜🎜$red_cmyk🎜 🎜= 🎜🎜$ hex🎜🎜->toCMYK();🎜🎜🎜🎜echo🎜🎜$red_cmyk🎜🎜; 🎜🎜// 0,1,1,0🎜🎜🎜echo🎜 🎜Hex::fromString( 🎜 🎜「赤」 🎜🎜)->色相(-20)->グレースケール();
🎜🎜// 555555🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜すでにすべての主要なカラー形式をサポートしており、操作できます🎜🎜23. PHP Geo – Geolocation Positioning Library🎜🎜phpgeo は地理を計算するためのシンプルなライブラリです座標間の高精度の距離。例: 🎜🎜🎜🎜🎜🎜🎜🎜1🎜🎜2🎜🎜3🎜🎜4🎜🎜5🎜🎜6🎜🎜7🎜🎜8🎜🎜🎜🎜🎜 🎜使用🎜🎜位置座標;🎜🎜🎜🎜使用🎜 🎜 LocationDistanceVincenty;🎜🎜🎜🎜$座標1🎜🎜= 🎜🎜新しい🎜🎜座標(19.820664, -155.468066) 🎜🎜// マウナケア山頂 🎜🎜🎜🎜$座標2 🎜🎜= 🎜🎜新しい🎜🎜 座標(20.709722, -156.253333); 🎜🎜// ハレアカラ サミット🎜🎜🎜🎜$calculator🎜🎜= 🎜🎜new🎜🎜Vincenty();🎜🎜🎜🎜$ distance🎜🎜= 🎜🎜$calcレーター🎜🎜->getDistance(🎜🎜; $座標1🎜🎜、
🎜🎜$座標2🎜🎜); 🎜🎜// 128130.850 (メートル; ≈128 キロメートル) を返します🎜🎜🎜🎜🎜🎜🎜
地理位置情報データを使用するアプリでうまく機能します。 HTML5 Location API、Yahoo の API (または天気 Web アプリのチュートリアルで行ったようにその両方) を翻訳して、座標を取得してみることができます。
24. ShellWrap – 美しいコマンドラインラッパー
ShellWrap ライブラリを使用すると、PHP コードで強力な Linux/Unix コマンド ライン ツールを使用できます。
1
2
3
4
5
6
7
8
9
10 11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2 7
|
require 'ShellWrap.php' ;
use MrRioShellWrap as sh;
//列出当前文件下的所有文件
echo sh::ls();
//检出一个git分支
sh::git( 'checkout' 「ShellWrap」が必要です。 php ' ;'master' );
//你也可以通过管道把一个命令的输出用户另一个命令
//下面通过curl跟踪位置,然后通过grep过滤’html’管道来下载example.com网站
echo sh::grep( 'html' , sh::curl( 'http://example.com'
array (
'location' => true
)));
//新建一个文件
sh::touch( 'file.html' use MrRioShellWrap
as//移除文件
sh::rm( 'file.html' sh;
//再次移除文件(这次失败了,然后因为文件不存在而抛出异常)
try {
sh::rm( 'file.html' );
} catch (Exception $e ) {
echo 'Caught failing sh::rm() call' ;
} //現在のファイルの下にあるすべてのファイルをリストします
|
echo
sh::ls() ;
//git ブランチをチェックアウトします
sh::git(🎜🎜'checkout'🎜🎜,
🎜🎜'master'🎜🎜); 🎜🎜🎜🎜//あるコマンドの出力を別のコマンドにパイプすることもできます🎜🎜🎜🎜//以下は、curl を介して場所を追跡し、「html」パイプをフィルタリングします。 grep example.com ウェブサイトをダウンロード🎜🎜🎜🎜echo🎜🎜sh::grep(🎜🎜'html'🎜🎜, sh::curl(🎜🎜'http://example.com'🎜🎜,
🎜🎜array🎜🎜(🎜🎜🎜🎜 🎜🎜'location'🎜🎜=> true🎜🎜🎜🎜))); 🎜🎜🎜🎜//新しいファイルを作成します🎜🎜🎜 🎜sh::touch(🎜🎜 ' file.html'🎜🎜);
🎜🎜🎜🎜//ファイルを削除🎜🎜🎜🎜sh::rm(🎜🎜'file.html'🎜🎜);
🎜🎜🎜🎜//ファイルを再度削除します(今回はファイルが存在しないため失敗し、例外がスローされました)🎜🎜🎜🎜try🎜🎜{🎜🎜🎜🎜 🎜🎜sh::rm( 🎜🎜'file.html'🎜🎜);🎜🎜🎜🎜} 🎜🎜catch🎜🎜(例外🎜🎜$e🎜🎜) {🎜🎜🎜🎜 '🎜🎜;🎜🎜🎜🎜}🎜🎜🎜🎜🎜🎜 🎜🎜🎜🎜コマンドラインで例外が発生すると、このライブラリは例外をスローするので、時間内に対応できます。また、あるコマンドの出力を別のコマンドの入力としてパイプして、柔軟性を高めることもできます。 🎜
🎜
上記では、PHP 開発者が知っておくべき 24 のライブラリを関連コンテンツも含めて紹介しています。PHP チュートリアルに興味のある友人の参考になれば幸いです。 🎜
🎜
🎜