Heim  >  Artikel  >  Backend-Entwicklung  >  24 Bibliotheken, die PHP-Entwickler kennen sollten

24 Bibliotheken, die PHP-Entwickler kennen sollten

WBOY
WBOYOriginal
2016-08-08 09:26:20950Durchsuche

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

3

4

5

6

1

2

3

respond('/[:name]', function($request) {

    echo'Hello '. $request->name;

});

7

8

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ßeninclude 'dispatch.php';// Definieren Sie Ihre Routeget( <code>'/greet', function() {//Ansicht rendern render('greet-form');}) ;//post processingpost('/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 bedienendispatch();
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. tbody>
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 bearbeitenrespond('/posts/[create|edit:action] /[i:id] ' , function($request, $response) { switch($request->action) {   // etwas tun }});

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= newHam('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();

12

3

4

5

6

1

2

3

4

5

6

7

8

9

10

11

useAsseticAssetAssetCollection;

useAsseticAssetFileAsset;

useAsseticAssetGlobAsset;

$js= newAssetCollection(array(

    newGlobAsset('/path/to/js/*'),

    newFileAsset('/path/to/another.js'),

));

//当资源被输出时,代码会被合并

echo$js->dump();

78 910111213141516 1718
require'../ham/ham.php ';$app= newHam(<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 useAsseticAssetAssetCollection;useAsseticAssetFileAsset;useAsseticAssetGlobAsset;$js = newAssetCollection(array( newGlobAsset('/path/to/js/*'), newFileAsset('/path/to/another.js'),));//Wenn die Ressource ausgegeben wird, wird der Code zusammengeführtecho$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;

12

3

4

5

6

1

2

3

4

5

6

7

8

9

10

11

12

13

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

useKnpSnappyPdf;

//通过wkhtmltopdf binary路径初始化库

$snappy= newPdf('/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');

7

8

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($tweetsas$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'; useKnpSnappyPdf; //Initialisieren Sie die Bibliothek über den wkhtmltopdf-Binärpfad $snappy= newPdf('/usr/local/bin /wkhtmltopdf '); //PDF im Browser anzeigen, indem der Content-Type-Header auf pdf gesetzt wirdheader( '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($tweetsas$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)

12

3

4

5

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) "[…]"

7

8

9

10

11

1

2

3

4

5

6

7

8

$request= newBuzzMessageRequest('HEAD', '/', 'http://google.com');

$response= newBuzzMessageResponse();

$client= newBuzzClientFileGetContents();

$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: tbody>
12345678 $request= newBuzzMessageRequest('HEAD' , '/', 'http://google.com'); $response= newBuzzMessageResponse();$client = newBuzzClientFileGetContents();$client- >send($request, $response);echo$request;<code>echo$response;

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';

useGoutteClient;

$client= newClient();

$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

3

4

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!';

}

echoCarbon::now()->subMinutes(2)->diffForHumans(); // '2分钟之前'

6789101112131415
require_once'/path/to/goutte.phar' useGoutteClient; $client= newClient(); 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

useUbenchUbench;

$bench= newUbench;

$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 2

3

4

5

6

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

useRespectValidationValidator asv;

//简单验证

$number= 123;

v::numeric()->validate($number); //true

//链式验证

$usernameValidator= v::alnum()->noWhitespace()->length(1,15);

$usernameValidator->validate('alganet'); //true

//验证对象属性

$user= newstdClass;

$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

7

8

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
useUbenchUbench;$bench= newUbench;$bench->start();//Führen Sie einige aus code $bench->end(); //Ausführungszeit und Speicher abrufenecho$bench->getTime() ; // 156ms oder 1,123secho$bench->getTime(true ); // verstrichene Mikrozeit in Floatecho$bench->getTime( false, '%d%s'); // 156ms oder 1secho$bench->getMemoryPeak( // 152B oder 90,00 Kb oder 15,23 MBecho$bench->getMemoryPeak( true); // Speicherspitze in Bytes Speicherspitzeecho$bench-&gt ;getMemoryPeak(false, '%.3f%s'); // 152B oder 90,152 Kb oder 15,234 MB//Speichernutzung am Ende der Markierung zurückgebenecho$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 asv; //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 = newstdClass;$user->name = 'Alexandre';$user->birthdate = '1987-07-01'; //Überprüfen Sie seine Attribute in einer einfachen Kette $userValidator= v::attribute('name', v::string()-&gt ;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 2

3

4

5

6

1

2

$m= newMustache_Engine;

echo$m->render('Hello {{planet}}', array('planet'=> 'World!')); // "Hello World!"

7

8

9

10

11

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

useGaufretteFilesystem;

useGaufretteAdapterFtp asFtpAdapter;

useGaufretteAdapterLocal asLocalAdapter;

//本地文件:

$adapter= newLocalAdapter('/var/media');

//可选地使用一个FTP适配器

// $ftp = new FtpAdapter($path, $host, $username, $password, $port);

//初始化文件系统

$filesystem= newFilesystem($adapter);

//使用它

$content= $filesystem->read('myFile');

$content= 'Hello I am the new content';

$filesystem->write('myFile', $content);

12131415 td >
//Reference Faker Autoloaderrequire_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= newMustache_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 useGaufretteFilesystem;useGaufretteAdapterFtp asFtpAdapter;useGaufretteAdapterLocal as LocalAdapter; //Lokale Datei:$adapter= newLocalAdapter('/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-&gt ;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

useOmnipayCreditCard;

useOmnipayGatewayFactory;

$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());

}

12

3

4

5

6

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

$storage= newUploadStorageFileSystem('/path/to/directory');

$file= newUploadFile('foo', $storage);

//验证文件上传

$file->addValidations(array(

//确保文件类型是"image/png"

    newUploadValidationMimetype('image/png'),

//确保文件不超过5M(使用"B","K","M"或者"G")

    newUploadValidationSize('5M')

));

//试图上传文件

try{

    //成功

    $file->upload();

} catch(Exception $e) {

    //失败!

    $errors= $file->getErrors();

}

78 910111213141516 171819
useOmnipayCreditCard; useOmnipayGatewayFactory;$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= newUploadStorageFileSystem('/path/to/directory'); $file= newUploadFile('foo' , $storage);//Datei-Upload überprüfen$ file->addValidations(array(/ /Stellen Sie sicher, dass der Dateityp „image/png“ ist newUploadValidationMimetype(' image/png'),//Stellen Sie sicher, dass die Datei 5 MB nicht überschreitet (verwenden Sie „B“, „ K", "M" oder "G") newUploadValidationSize('5M ' )));//Es wird versucht, eine Datei hochzuladenversuchen{ //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= newHTMLPurifier($config);

$clean_html= $purifier->purify($dirty_html);

12

3

4

5

1

2

3

4

5

6

7

useMischiefCollectiveColorJizzFormatsHex;

$red_hex= newHex(0xFF0000);

$red_cmyk= $hex->toCMYK();

echo$red_cmyk; // 0,1,1,0

echoHex::fromString('red')->hue(-20)->greyscale(); // 555555

require_once '/path/to/HTMLPurifier.auto.php';$config= HTMLPurifier_Config::createDefault () ;

$purifier= newHTMLPurifier( $config );

$clean_html= $purifier -&gt ;purify($dirty_html);

1

2

3

4

5

6

7

8

useLocationCoordinate;

useLocationDistanceVincenty;

$coordinate1= newCoordinate(19.820664, -155.468066); // Mauna Kea Summit 茂纳凯亚峰

$coordinate2= newCoordinate(20.709722, -156.253333); // Haleakala Summit

$calculator= newVincenty();

$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= newHex(0xFF0000); code>$red_cmyk= $hex->toCMYK();echo$red_cmyk; // 0,1,1,0echoHex::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: useLocationCoordinate;useLocationDistanceVincenty;$coordinate1= newCoordinate(19.820664, -155.468066); // Mauna Kea-Gipfel Mauna Kea$coordinate2= newCoordinate(20.709722, -156.253333 ); // Haleakala-Gipfel$calculator= neuVincenty ();$distance= $calculator->getDistance($koordinate1, $coordinate2); // gibt 128130,850 (Meter; ≈128 Kilometer) zurück
12 345678

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';

useMrRioShellWrap assh;

//列出当前文件下的所有文件

echosh::ls();

//检出一个git分支

sh::git('checkout', 'master');

//你也可以通过管道把一个命令的输出用户另一个命令

//下面通过curl跟踪位置,然后通过grep过滤’html’管道来下载example.com网站

echosh::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

3

4

567891011121314151617181920212223 24252627
require' ShellWrap.php';verwendenMrRioShellWrap assh ; //Alle Dateien unter der aktuellen Datei auflistenechosh::ls( ) ; //Schau dir einen Git-Zweig ansh::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 herunterzuladenechosh::grep('html', sh::curl('http:// example.com' code><code>, array( 'location'=> true ))); //Eine neue Datei erstellensh : :touch('file.html'); //Datei entfernensh::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.
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn