Es ist eine aufregende Zeit, ein PHP-Entwickler zu sein. Täglich werden unzählige nützliche Bibliotheken verteilt, die auf Github leicht zu entdecken und zu verwenden sind. Unten sind 24 der coolsten Bibliotheken, die ich je gesehen habe. Ist Ihre Lieblingsbibliothek nicht auf dieser Liste? Dann teile es in den Kommentaren!
1. Dispatch – Mikro-Framework
Dispatch ist ein kleines PHP-Framework. Sie erhalten damit kein vollständiges MVC-Setup, aber Sie können URL-Regeln und -Methoden definieren, um Ihre Anwendung besser zu organisieren. Dies ist perfekt für APIs, einfache Websites oder Prototypen.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
//包含库
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();
|
12 345
6
1
2
3
|
respond( '/[:name]' ,
function ( $request ) {
echo 'Hello ' . $request ->name;
});
|
78
9
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' ),
$route , $callback );
//你或许也想在相同的地方处理请求
respond( '/posts/[create|edit:action] /[i:id] ' ,
function ( $request ,
$response ) {
switch ( $request ->action) {
// do something
}
});
|
101112131415161718 |
//Bibliothek einschließen include 'dispatch.php' ; // Definieren Sie Ihre Route get( <code>'/greet' ,
function () {
//Ansicht rendern render( 'greet-form' ); }) ; //post processing post( '/greet' ,
function () { $name = from( $_POST ,
'name' );
// eine Ansicht rendern, während man an einigen Einheimischen vorbeifährt code><code> render( 'greet-show' ,
array ( 'name' => $name ));}); // Ihre Website bedienen dispatch();
|
Sie können bestimmte Arten von HTTP-Anfragen zuordnen und Pfade, Ansichten rendern oder mehr tun. Wenn Sie Dispatch mit anderen Frameworks kombinieren, können Sie ein sehr leistungsfähiges und leichtes Programm erhalten! 2. Klein – Blitzschnelles Routing für PHP Klein ist eine weitere leichte Routing-Bibliothek für PHP5.3+. Obwohl es eine etwas ausführlichere Syntax als Dispatch hat, ist es recht schnell. Hier ist ein Beispiel:
1 23 |
respond( '/[:name]' ,
function ( $request ) { echo 'Hallo ' $request ->name; });
|
Sie können es auch anpassen Geben Sie die HTTP-Methode an und verwenden Sie einen regulären Ausdruck für den Pfad.
12 34567891011121314 |
antworten( 'GET' ,
'/posts' , $callback ); antworten( 'POST' ,
'/posts/create' , $callback ); respond('PUT' ,
'/posts/[i:id]' , $callback ); respond( 'DELETE' ,
'/posts/[i:id]' , $callback ); //Mehrere Anforderungsmethoden abgleichen: respond( array ( 'POST', 'GET' ),
$route , $callback ); // Möglicherweise möchten Sie auch Anfragen an derselben Stelle bearbeiten respond( '/posts/[create|edit:action] /[i:id] ' ,
function ( $request ,
$response ) { switch ( $request ->action) { // etwas tun } });
|
tbody>
Das ist großartig für kleine Projekte, aber wenn Sie eine solche Bibliothek für eine große Anwendung verwenden, müssen Sie die Regeln befolgen, da sich Ihr Code schnell ändern und nicht wartbar sein kann. Entscheiden Sie sich also besser für ein ausgereiftes Framework wie Laravel oder CodeIgniter.
3. Ham – Routing-Bibliothek mit Cache
Ham ist ebenfalls ein leichtes Routing-Framework, nutzt jedoch Caching, um noch schnellere Geschwindigkeiten zu erreichen. Dies geschieht durch Zwischenspeichern aller E/A-bezogenen Vorgänge in XCache/APC. Hier ist ein Beispiel:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
require '../ham/ham.php' ;
$app = new Ham( 'example' );
$app ->config_from_file( 'settings.php' );
$app ->route( '/pork' ,
function ( $app ) {
return "Delicious pork." ;
});
$hello = function ( $app ,
$name = 'world' ) {
return $app ->render( 'hello.html' ,
array (
'name' => $name
));
};
$app ->route( '/hello/<string>' ,
$hello );
$app ->route( '/' ,
$hello );
$app ->run();
|
12345
6
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();
|
78 910111213141516 1718 |
require '../ham/ham.php ' ; $app = new Ham(<code>'example' ); $app ->config_from_file( 'settings.php'); $app ->route( '/schweinefleisch' ,
function ( $app ) { return "Köstliches Schweinefleisch." ; }); $hello = function ( $app ,
$name = 'world' ) { <code>return $app ->render( 'hello.html' ,
array ( 'name' => $name )); }; $app ->route( '/hello/<string>' ,
$hello ); $app ->route( '/' ,
$hello ); $app ->run();
|
Diese Bibliothek erfordert, dass Sie mindestens XCache und APC installiert haben, was bedeuten kann , funktioniert es bei den meisten Hosting-Anbietern möglicherweise nicht. Wenn Sie jedoch einen Host haben, auf dem einer davon installiert ist, oder Sie die Kontrolle über Ihren Webserver haben, sollten Sie dieses schnellste Framework ausprobieren. 4. Assetic – Ressourcenmanagement Assetic ist ein PHP-Ressourcenmanagement-Framework zum Zusammenführen und Reduzieren von CSS/JS-Ressourcen. Nachfolgend finden Sie Beispiele.
12 34567891011 |
use AsseticAssetAssetCollection; useAsseticAssetFileAsset; use AsseticAssetGlobAsset; $js = new AssetCollection( array ( new GlobAsset( '/path/to/js/*' ), new FileAsset( '/path/to/another.js' ), )); //Wenn die Ressource ausgegeben wird, wird der Code zusammengeführt echo $js ->dump();
|
Die Kombination von Ressourcen auf diese Weise ist eine gute Idee, da sie die Website beschleunigen kann. Es wird nicht nur das gesamte Download-Volumen reduziert, sondern auch eine große Anzahl unnötiger HTTP-Anfragen eliminiert (das sind die beiden Dinge, die die Seitenladezeit am meisten beeinflussen)
5. ImageWorkshop – Bildverarbeitung mit Ebenen
ImageWorkshop ist eine Open-Source-Bibliothek, mit der Sie mehrschichtige Bilder bearbeiten können. Damit können Sie die Größe ändern, zuschneiden, Miniaturansichten erstellen, Wasserzeichen hinzufügen und vieles mehr. Hier ist ein Beispiel:
1
2
3
4
5
6
7
8
9
10
11
|
// 从norway.jpg图片初始化norway层
$norwayLayer = ImageWorkshop::initFromPath( '/path/to/images/norway.jpg' );
// 从watermark.png图片初始化watermark层(水印层)
$watermarkLayer = ImageWorkshop::initFromPath( '/path/to/images/watermark.png' );
$image = $norwayLayer ->getResult();
// 这是生成的图片!
header( 'Content-type: image/jpeg' );
imagejpeg( $image , null, 95);
// We choose to show a JPG with a quality of 95%
exit ;
|
12345
6
1
2
3
4
5
6
7
8
9
10
11
12
13
|
require_once '/path/to/snappy/src/autoload.php' ;
use KnpSnappyPdf;
//通过wkhtmltopdf binary路径初始化库
$snappy = new Pdf( '/usr/local/bin/wkhtmltopdf' );
//通过把Content-type头设置为pdf来在浏览器中展示pdf
header( 'Content-Type: application/pdf' );
header( 'Content-Disposition: attachment; filename="file.pdf"' );
echo $snappy ->getOutput( 'http://www.github.com' );
|
78
9
10
11
|
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' ,
'j4mie' )
->find_one();
$user ->first_name =
'Jamie' ;
$user ->save();
$tweets = ORM::for_table( 'tweet' )
->select( 'tweet.*' )
->join( 'user' ,
array (
'user.id' ,
'=' , 'tweet.user_id'
))
->where_equal( 'user.username' ,
'j4mie' )
->find_many();
foreach ( $tweets as $tweet ) {
echo $tweet ->text;
}
|
// Initialisiere die norway-Ebene aus dem norway.jpg-Bild $norwayLayer = ImageWorkshop::initFromPath( '/path/to/images/norway.jpg' );
// Initialisieren Sie die Wasserzeichenebene (Wasserzeichenebene) aus dem Bild „watermark.png“ $watermarkLayer = ImageWorkshop::initFromPath( '/path/to/images/watermark.png' );
$image = $norwayLayer ->getResult();
// Dies ist das generierte Bild! header( 'Content-type: image/jpeg' ); imagejpeg( $image , null, 95);
// Wir zeigen ein JPG mit einer Qualität von 95 % exit ; |
ImageWorkshop wurde entwickelt, um einige der häufigsten Fälle der Arbeit mit Bildern in PHP zu vereinfachen, falls Sie welche benötigen Wenn Sie etwas Leistungsstärkeres suchen, sollten Sie sich die Imagine-Bibliothek ansehen! 6. Snappy – Snapshot-/PDF-Bibliothek Snappy ist eine PHP5-Bibliothek, die Snapshots, URLs, HTML und PDFs generieren kann. Es basiert auf der Binärdatei wkhtmltopdf (verfügbar unter Linux, Windows und OSX). Sie können sie wie folgt verwenden:
1 2345678910111213 |
require_once '/path/to/snappy/src/autoload.php' ;
use KnpSnappyPdf; //Initialisieren Sie die Bibliothek über den wkhtmltopdf-Binärpfad $snappy = new Pdf( '/usr/local/bin /wkhtmltopdf ' );
//PDF im Browser anzeigen, indem der Content-Type-Header auf pdf gesetzt wird header( 'Content-Type: application/pdf' ); header( 'Content-Disposition: attachment; filename= "file.pdf"' );
echo $snappy ->getOutput( 'http://www.github .com' );
|
Denken Sie daran, Ihr Der Hosting-Anbieter erlaubt möglicherweise nicht den Aufruf externer Binärdateien. 7. Idiorm – leichte ORM-Bibliothek Idiorm ist mein Favorit, den ich zuvor in Tutorials auf dieser Website verwendet habe. Es handelt sich um eine leichtgewichtige ORM-Bibliothek, einen PHP5-Abfrage-Builder, der auf PDO basiert. Damit können Sie vergessen, wie man langweiliges SQL schreibt:
1234567 89101112131415 161718 |
$user = ORM::for_table( 'user' ) ->where_equal( code>->where_equal( code>'username' ,
'j4mie' ) ->find_one(); $user ->first_name =
'Jamie' ; $user ->save(); $tweets = ORM::for_table( 'tweet' ) ->select( 'tweet.*' ) ->join( 'user' ,
array ( 'user.id' ,
'=' , 'tweet.user_id' )) ->where_equal( 'user.username' ,
'j4mie' ) ->find_many(); foreach ( $tweets as $tweet ) { echo $tweet ->text; }
|
Idiorm hat eine Schwesterbibliothek namens Paris, bei der es sich um eine Active Record-Implementierung basierend auf Idiorm handelt.
8. Underscore – ein Toolgürtel für PHP
Underscore ist eine Schnittstelle zum ursprünglichen Underscore.js – ein Toolgürtel für Javascript-Anwendungen. Die PHP-Version enttäuscht nicht und unterstützt fast alle nativen Funktionen. Hier sind einige Beispiele:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
__::each( array (1, 2, 3),
function ( $num ) {
echo $num . ',' ; });
<code>// 1,2,3,
$multiplier = 2;
__::each( array (1, 2, 3),
function ( $num ,
$index ) use ( $multiplier ) {
echo $index . '=' . ( $num * $multiplier ) .
',' ;
});
// prints: 0=2,1=4,2=6,
__::reduce( array (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( array (1, 2, 3, 4),
function ( $num ) {
return $num % 2 === 0; }); // array(2, 4)
|
12345
6
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' ,
$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) "[…]"
|
78
9
10
11
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 ;
|
1213 |
__: :each( array (1, 2, 3),
function ( $num ) {
echo $num ',' <code>// 1,2,3, $multiplier = 2; __::each( array (1, 2, 3),
function ( $num ,
$index ) use ( $multiplier ) { echo $index '='<code>. ( $num * $multiplier ) .
',' ; }); // druckt : 0=2,1=4,2=6, __::reduce( array (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( array (1, 2, 3, 4),
function ( $num ) {
return $num % 2 === 0 }); /code>
|
Diese Bibliothek unterstützt auch Kettensyntax, was sie noch leistungsfähiger macht. 9. Requests – Einfache HTTP-Anfragen Requests ist eine Bibliothek, die HTTP-Anfragen vereinfacht. Wenn Sie wie ich sind und sich fast nie an die verschiedenen an Curl übergebenen Parameter erinnern können, dann ist dies das Richtige für Sie:
123456789101112 |
$headers = array ( 'Accept' => 'application/json' ); $options<code>= array ( 'auth' => array ( 'user' ,
'pass' )); $request = Requests::get( code><code>'https://api.github.com/gists' ,
$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) „[…]“
|
Mit Hilfe dieser Bibliothek können Sie HEAD-, GET-, POST-, PUT-, DELTE- und PATCH-HTTP-Anfragen senden Das Array kann übergeben werden. Dateien und Parameter werden hinzugefügt und auf alle entsprechenden Daten kann zugegriffen werden. 10. Buzz – Einfache HTTP-Anfragebibliothek Buzz ist eine weitere Bibliothek, die HTTP-Anfragen abschließt. Hier ist ein Beispiel:
12345678 |
$request = new BuzzMessageRequest( 'HEAD' ,
'/' , 'http://google.com' ); $response = new BuzzMessageResponse(); $client = new BuzzClientFileGetContents(); $client - >send( $request ,
$response ); echo $request ;<code>echo $response ;
|
tbody>
Da es keine Dokumentation gibt, müssen Sie den Quellcode lesen, um alle unterstützten Parameter zu erfahren.
11. Goutte – Web-Scraping-Bibliothek
Goutte ist eine Bibliothek zum Scraping von Websites und zum Extrahieren von Daten. Es bietet eine elegante API, die die Auswahl bestimmter Elemente von Remote-Seiten vereinfacht.
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' ,
'http://www.symfony-project.org/' );
//点击链接
$link = $crawler ->selectLink( 'Plugins' )->link();
$crawler = $client ->click( $link );
//使用一个类CSS语法提取数据
$t = $crawler ->filter( '#data' )->text();
echo "Here is the text: $t" ;
|
12 34
5
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分钟之前'
|
6789101112131415 |
require_once '/path/to/goutte.phar' use GoutteClient; $client = new Client(); code> code><code>$crawler = $client ->request( ' GET' ,
'http://www.symfony-project.org/' );
//Klicken Sie auf den Link $link = $crawler ->selectLink( 'Plugins' )->link(); $ crawler = $client ->click( $link );
//Verwenden Sie eine CSS-ähnliche Syntax, um Daten zu extrahieren $t = $crawler->filter( '#data' )->text();
echo "Hier ist der Text: $t" ; code> td> |
12. Carbon – DateTime-Bibliothek Carbon ist eine einfache Erweiterung der DateTime-API.
12 34567891011121314151617181920212223 2425 |
printf( "Im Moment ist %s" , Carbon::now()->toDateTimeString()); printf( "Derzeit ist %s in Vancouver" , 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' ); //Immer mit UTC vergleichen if (Carbon::now()->gte( $endOfWorld )) { die (); } if (Carbon::now()->isWeekend()) { echo code>'Party!' ; } echo Carbon::now()->subMinutes(2)->diffForHumans(); // 'vor 2 Minuten'
|
13. Ubench – Mikro-Benchmark-Bibliothek
Ubench ist eine Mikrobibliothek zur Auswertung von PHP-Code, zur Überwachung der (Code-)Ausführungszeit und der Speichernutzung. Hier ist ein Beispiel:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
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' );
// 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' );
// 152B or 90.152Kb or 15.234Mb
//在结束标识处返回内存使用情况
echo $bench ->getMemoryUsage(); // 152B or 90.00Kb or 15.23Mb
|
1 2345
6
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 ->name =
'Alexandre' ;
$user ->birthdate =
'1987-07-01' ;
//在一个简单链中验证他的属性
$userValidator = v::attribute( 'name' , v::string()->length(1,32))
->attribute( 'birthdate' , v:: date ()->minimumAge(18));
$userValidator ->validate( $user );
//true
|
78
9
10
11
1
2
3
4
5
|
$f = Filter::factory( 'string,max:5' );
$str = 'This is a test string' ;
$f ->validate( $str );
// false
$f ->filter( $str );
// 'This '
|
1213141516 1718192021 |
use UbenchUbench; $bench = new Ubench;$bench ->start(); //Führen Sie einige aus code $bench -> end (); //Ausführungszeit und Speicher abrufen echo $bench ->getTime() ; // 156ms oder 1,123s echo $bench ->getTime(true ); // verstrichene Mikrozeit in Float echo $bench ->getTime( false, '%d%s' );
// 156ms oder 1s echo $bench ->getMemoryPeak( // 152B oder 90,00 Kb oder 15,23 MB echo $bench ->getMemoryPeak( true); // Speicherspitze in Bytes Speicherspitze echo $bench -> ;getMemoryPeak(false, '%.3f%s' );
// 152B oder 90,152 Kb oder 15,234 MB //Speichernutzung am Ende der Markierung zurückgeben echo $bench ->getMemoryUsage(); // 152B oder 90,00 KB oder 15,23 MB
|
Es ist eine gute Idee, diese Prüfungen (nur) während der Entwicklung durchzuführen. 14. Validierung – Eingabevalidierungs-Engine Validation behauptet, die leistungsstärkste Validierungs-Engine in der PHP-Bibliothek zu sein. Aber wird es seinem Namen gerecht? Schauen Sie unten:
12 34567891011121314151617181920 |
use RespectValidationValidator as v; //Einfache Überprüfung $number = 123; v::numeric()->validate( $number );
//true //Kettenüberprüfung $usernameValidator = v::alnum()->noWhitespace()->length(1,15); $usernameValidator ->validate( 'alganet' );
//true //Objekteigenschaften überprüfen $user = new stdClass; $user ->name =
'Alexandre' ; $user ->birthdate =
'1987-07-01' ; //Überprüfen Sie seine Attribute in einer einfachen Kette $userValidator = v::attribute( 'name' , v::string()-> ;length (1,32)) ->attribute( 'birthdate' , v :: Datum ()->minimumAge(18));
$userValidator ->validate( $user );
//true
|
Sie können diese Bibliothek übergeben Validieren Sie Ihre Formulare oder andere vom Benutzer übermittelte Daten. Darüber hinaus verfügt es über zahlreiche integrierte Validierungsfunktionen, die Ausnahmen und benutzerdefinierte Fehlermeldungen auslösen. 15. Filterus – Filterbibliothek Filterus ist eine weitere Filterbibliothek, die jedoch die Ausgabe nicht nur überprüfen, sondern auch entsprechend dem voreingestellten Muster filtern kann. Hier ist ein Beispiel:
12345 |
$f = Filter::factory( 'string,max:5' ); $str = 'Dies ist eine Testzeichenfolge' ;
$f ->validate( $str );
// false $f ->filter( $str );
// 'This '
|
Filterus verfügt über viele integrierte Modi, unterstützt die Verwendung von Ketten und kann sogar unabhängige Validierungsregeln zur Validierung von Array-Elementen verwenden.
16. Faker - Fake Data Generator
Faker ist eine PHP-Bibliothek, die gefälschte Daten für Sie generiert. Dies ist praktisch, wenn Sie eine Testdatenbank füllen oder Testdaten für Ihre Webanwendung generieren müssen. Es ist auch sehr einfach zu verwenden:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
//引用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 ...
|
1 2345
6
1
2
|
$m = new Mustache_Engine;
echo $m ->render( 'Hello {{planet}}' ,
array ( 'planet' => 'World!' ));
// "Hello World!"
|
78
9
10
11
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适配器
// $ftp = new FtpAdapter($path, $host, $username, $password, $port);
//初始化文件系统
$filesystem = new Filesystem( $adapter );
//使用它
$content = $filesystem ->read( 'myFile' );
$content = 'Hello I am the new content' ;
$filesystem ->write( 'myFile' ,
$content );
|
12131415 td > |
//Reference Faker Autoloader require_once '/path/to/Faker/src / autoload.php' ; //Verwenden Sie die Factory-Erstellung, um eine FakerGenerator-Instanz zu erstellen $ faker = FakerFactory::create(); //Generieren Sie gefälschte Daten durch Zugriff auf Eigenschaften echo $faker ->name; // 'Lucy Cechtelar'; echo <code>$faker ->address; // "426 Jordy Lodge // Cartwrightshire, SC 88120-6700" echo $faker / code>->text; // Sint velit eveniet. Rerum atque repellat voluptatem quia...
|
Solange Sie weiterhin auf Objekteigenschaften zugreifen, werden weiterhin zufällig generierte Daten zurückgegeben. 17. Mustache.php – Elegante Vorlagenbibliothek Mustache ist eine beliebte Vorlagensprache, die tatsächlich in verschiedenen Programmiersprachen implementiert wurde. Damit können Sie Vorlagen in Kunden- oder Servicesegmenten wiederverwenden. Wie Sie vermutet haben, wird Mustache.php mit PHP implementiert.
12 |
$m = new Mustache_Engine; echo $m ->render( 'Hallo {{planet}}' ,
array ( 'planet' => 'World!' ));
// „Hallo Welt!“
|
Vorschläge Weitere Beispiele finden Sie in den offiziellen Moustache-Dokumenten. 18. Gaufrette – Dateisystem-Abstraktionsschicht Gaufrette ist eine PHP5-Bibliothek, die eine Abstraktionsschicht für das Dateisystem bereitstellt. Es ermöglicht die Manipulation lokaler Dateien, FTP-Server, Amazon S3 oder mehr auf die gleiche Weise. Es ermöglicht Ihnen, Programme zu entwickeln, ohne zu wissen, wie Sie in Zukunft auf Ihre Dateien zugreifen werden.
12 34567891011121314151617 |
use GaufretteFilesystem; use GaufretteAdapterFtp as FtpAdapter; use GaufretteAdapterLocal as LocalAdapter; //Lokale Datei: $adapter = new LocalAdapter( '/var/media' );
//Optional einen FTP-Adapter verwenden // $ftp = new FtpAdapter($path, $host, $ username, $passwort, $port);
//Dateisystem initialisieren $filesystem = new<code>Filesystem( $adapter );
//Verwenden Sie es $content = $filesystem->read( 'myFile' ); $content = 'Hallo, ich bin der neue Inhalt' ; $filesystem -> ;write( 'myFile' ,
$content );
|
Es gibt auch Cache- und Speicheradapter, weitere werden später hinzugefügt.
19. Omnipay – Zahlungsverarbeitungsbibliothek
Omnipay ist eine PHP-Zahlungsverarbeitungsbibliothek. Es verfügt über eine klare und konsistente API und unterstützt Dutzende Gateways. Mit dieser Bibliothek müssen Sie lediglich eine API erlernen und mit verschiedenen Zahlungsabwicklern umgehen. Hier ist ein Beispiel:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
use OmnipayCreditCard;
use OmnipayGatewayFactory;
$gateway = GatewayFactory::create( 'Stripe' );
$gateway ->setApiKey( 'abc123' );
$formData = [ 'number' => '4111111111111111' ,
'expiryMonth' => 6,
'expiryYear' => 2016];
$response = $gateway ->purchase([ 'amount' => 1000, 'card' => $formData ]);
if ( $response ->isSuccessful()) {
//支付成功:更新数据库
print_r( $response );
} elseif ( $response ->isRedirect()) {
//跳转到异地支付网关
$response ->redirect();
} else {
//支付失败:向客户显示信息
exit ( $response ->getMessage());
}
|
12345
6
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' ,
$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();
}
|
78 910111213141516 171819 |
use OmnipayCreditCard; use OmnipayGatewayFactory; $gateway = GatewayFactory::create ( 'Stripe' ); $gateway ->setApiKey( 'abc123' ); $formData = [ 'number' => '4111111111111111' ,
'expiryMonth' =>
'expiryYear' => $response = $gateway ->purchase([ 'amount' => 1000, 'card' => $formData ]); if ( $response ->isSuccessful()) {
//Zahlung erfolgreich: Datenbank aktualisieren print_r( $response ); } elseif ( $response ->isRedirect()) {
//Zum Remote-Zahlungsgateway springen $response ->redirect();<code>} else { //Zahlung fehlgeschlagen: Informationen für den Kunden anzeigen exit ( code><code>exit code><code>$response ->getMessage()); }
|
Durch die Verwendung derselben konsistenten API ist es einfach, mehrere Zahlungsabwickler zu unterstützen oder bei Bedarf zu wechseln. 20. Upload – Handhabung von Datei-Uploads Upload ist eine Bibliothek, die das Hochladen und Überprüfen von Dateien vereinfacht. Beim Hochladen eines Formulars überprüft diese Bibliothek den Dateityp und die Dateigröße.
12 34567891011121314151617181920 |
$storage = new UploadStorageFileSystem( '/path/to/directory' ); $file = new UploadFile( 'foo' ,
$storage ); //Datei-Upload überprüfen $ file ->addValidations( array (
/ /Stellen Sie sicher, dass der Dateityp „image/png“ ist new UploadValidationMimetype( ' image/png' ),
//Stellen Sie sicher, dass die Datei 5 MB nicht überschreitet (verwenden Sie „B“, „ K", "M" oder "G") new UploadValidationSize( '5M ' ) )); //Es wird versucht, eine Datei hochzuladen versuchen { //Erfolg $file ->upload(); } catch code><code>(Ausnahme $e ) { //Fehlgeschlagen!<code> $errors = $file ->getErrors( ); }
|
Es wird viel mühsamen Code reduzieren.
21. HTMLPurifier – HTML-XSS-Schutz
HTMLPurifier ist eine HTML-Filterbibliothek, die Ihren Code durch leistungsstarke Whitelisting- und Aggregationsanalysen vor XSS-Angriffen schützt. Es stellt außerdem sicher, dass das Ausgabe-Markup dem Standard entspricht. (Der Quellcode ist auf 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 );
|
12345
|
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' )->hue(-20)->greyscale();
// 555555
|
require_once '/path/to/HTMLPurifier.auto.php' ; $config = HTMLPurifier_Config::createDefault () ;
$purifier = new HTMLPurifier( $config );
$clean_html = $purifier -> ;purify( $dirty_html );
|
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)
|
Wenn Ihre Website es Benutzern ermöglicht, HTML-Code einzureichen und den Code ohne Änderungen anzuzeigen, dann ist es an der Zeit, diese Bibliothek zu verwenden. 22. ColorJizz-PHP – FarbmanipulationsbibliothekColorJizz ist eine einfache Bibliothek, mit der Sie verschiedene Farbformate konvertieren und einfache Farboperationen durchführen können
1234 567 |
use MischiefCollectiveColorJizzFormatsHex; $red_hex = new Hex(0xFF0000); code>$red_cmyk = $hex ->toCMYK(); echo $red_cmyk ; // 0,1,1,0 echo Hex::fromString( 'red' )->hue(-20)->greyscale();
// 555555
|
Es wird bereits unterstützt und kann alle gängigen Farbformate steuern 23. PHP Geo – Bibliothek zur geografischen Standortpositionierung phpgeo ist eine einfache Bibliothek zur Berechnung hochpräziser Entfernungen zwischen geografischen Koordinaten. Zum Beispiel:
12 345678 |
use
LocationCoordinate;
use
LocationDistanceVincenty;
$coordinate1
=
new
Coordinate(19.820664, -155.468066);
// Mauna Kea-Gipfel Mauna Kea
$coordinate2
=
new
Coordinate(20.709722, -156.253333 );
// Haleakala-Gipfel
$calculator
=
neu
Vincenty ();
$distance
=
$calculator
->getDistance($koordinate1
,
$coordinate2
);
// gibt 128130,850 (Meter; ≈128 Kilometer) zurück
Es funktioniert gut in Apps, die Geolokalisierungsdaten verwenden. Sie können versuchen, die HTML5-Standort-API, die Yahoo-API (oder beide, wie wir es im Tutorial zur Wetter-Web-App getan haben) zu übersetzen, um die Koordinaten zu erhalten.
24. ShellWrap – Schöner Befehlszeilen-Wrapper
Mit der ShellWrap-Bibliothek können Sie leistungsstarke Linux/Unix-Befehlszeilentools in PHP-Code verwenden.
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
27
|
require 'ShellWrap.php' ;
use MrRioShellWrap as sh;
//列出当前文件下的所有文件
echo sh::ls();
//检出一个git分支
sh::git( 'checkout' ,
'master' );
//你也可以通过管道把一个命令的输出用户另一个命令
//下面通过curl跟踪位置,然后通过grep过滤’html’管道来下载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 (Exception $e ) {
echo 'Caught failing sh::rm() call' ;
}
|
12 34567891011121314151617181920212223 24252627 |
require ' ShellWrap.php' ; verwenden MrRioShellWrap as sh ; //Alle Dateien unter der aktuellen Datei auflisten echo sh::ls( ) ; //Schau dir einen Git-Zweig an sh::git( 'checkout' <code>,
'master' ); //Sie können die Ausgabe eines Befehls auch an einen anderen Befehl weiterleiten code>//Im Folgenden wird Curl verwendet, um den Standort zu verfolgen, und dann die „HTML“-Pipeline durch grep gefiltert, um die Website example.com herunterzuladen echosh::grep( 'html' , sh::curl( 'http:// example.com' code><code>,
array ( 'location' => true ))); //Eine neue Datei erstellen sh : :touch( 'file.html' );
//Datei entfernen sh::rm( 'file.html' code ><code>);
//Entfernen Sie die Datei erneut (diesmal schlug es fehl und dann wurde eine Ausnahme ausgelöst, weil die Datei nicht existierte) try<code>{ sh::rm( 'file.html' ); } catch (Ausnahme $e ) { echo 'Fehler beim Aufruf von sh::rm() erwischt' ;<code>}
|
When-Befehl Diese Bibliothek löst Ausnahmen aus, wenn in einer Zeile eine Ausnahme auftritt, sodass Sie umgehend darauf reagieren können. Sie können damit auch die Ausgabe eines Befehls als Eingabe eines anderen Befehls weiterleiten, um eine größere Flexibilität zu erreichen.
Das Obige stellt 24 Bibliotheken vor, die PHP-Entwickler kennen sollten, einschließlich relevanter Inhalte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.