24 PHP Libraries You should know
2015-09-08 Category: Web development, programming development, Home essence of no comment from the source: Bole Online
share to: more 3
- 200,000 year salary PHP engineer training Program
- Become a mad-robbed Android Bull man
- Java heavy difficulty in the middle of the wind
- Linux Operations Fundamentals Course
As a PHP developer, now is an exciting time. Many useful libraries are distributed every day, and these libraries are easy to discover and use on GitHub. Here are some of the coolest 24 libraries I've ever met. Is your favorite library not in this list? Let's share it in the comments!
1. dispatch– Micro-Frame
Dispatch is a small PHP framework. It doesn't give you full MVC settings, but you can define URL rules and methods to better organize your application. This is perfect for APIs, simple sites, or prototypes.
Include library include ' dispatch.php ';//define your route get ('/greet ', function () {//Render view render (' Greet-form ');}); /post processing POST ('/greet ', function () { $name = from ($_post, ' name ');//Render a view while passing some locals render (' Greet-show ', Array (' name ' = = $name);}); /Serve your sitedispatch ();
You can match specific types of HTTP requests and paths, render views, or do more things. If you merge dispatch and other frameworks, you can have a fairly powerful and lightweight program!
2. klein–php lightning-Fast Routing
Klein is another lightweight routing library for the php5.3+ version. Although it has some verbose syntax than dispatch, it's pretty fast. Here's an example:
Respond ('/[:name] ', function ($request) { echo ' Hello '. $request->name;});
You can also customize to specify HTTP methods and use regular expressions as paths.
Respond (' GET ', '/posts ', $callback); respond (' POST ', '/posts/create ', $callback); respond (' PUT ', '/posts/[i:id] ', $ callback); Respond (' DELETE ', '/posts/[i:id] ', $callback);//Match multiple request methods: Respond (Array (' POST ', ' GET '), $route, $callback) ;//You may also want to handle requests in the same place respond ('/posts/[create|edit:action]/[i:id] ', function ($request, $response) { switch ($ Request->action) {//Do something }});
This is great for small projects, but when you use a library like this for a large application, you have to follow the rules, because your code can quickly become non-maintainable. So you'd better go with a fully fledged framework like laravel or CodeIgniter.
3. ham– The routing library with cache
Ham is also a lightweight routing framework, but it takes advantage of caching to get even faster. It caches any I/O-related stuff into the XCACHE/APC. Here is an example:
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 ();
This library requires you to install at least one of the XCache and APC, which may mean that it may not be available on most hosts provided by the host provider. But if you have a host that installs them, or you can manipulate your Web server, you should try this fastest framework.
4. assetic– Resource Management
Assetic is a PHP resource management framework for merging and reducing CSS/JS resources. Here is an example.
Use Assetic/asset/assetcollection;use assetic/asset/fileasset;use assetic/asset/globasset; $js = new AssetCollection ( Array ( new Globasset ('/path/to/js/* '), new Fileasset ('/path/to/another.js ')), and//when the resource is output, the code is merged with Echo $js- >dump ();
Merging resources in this way is a good idea because it can speed up the site. Not only does the total download decrease, but it also eliminates a lot of unnecessary HTTP requests (two things that most affect page load times)
5. Picture processing of imageworkshop– layer
Imageworkshop is an open source library that lets you manipulate images with layers. With it you can redefine dimensions, crop, make thumbnails, draw water or do more. Here is an example:
Initialize the Norway layer from the norway.jpg image $norwaylayer = Imageworkshop::initfrompath ('/path/to/images/norway.jpg '); Initialize the watermark layer (watermark layer) from the watermark.png picture $watermarkLayer = Imageworkshop::initfrompath ('/path/to/images/watermark.png ‘); $image = $norwayLayer->getresult (); This is the generated picture!header (' content-type:image/jpeg '); imagejpeg ($image, NULL, 95); We choose to show a JPG with a quality of 95%exit;
Imageworkshop was developed to simplify some of the most common cases of processing pictures in PHP, and if you need something more powerful, you should look at Imagine library!
6. snappy– Snapshot/pdf Library
Snappy is a PHP5 library that can generate snapshots, URLs, HTML, and PDFs. It relies on wkhtmltopdf binary (available on both linux,windows and OSX). You can use them like this:
Require_once '/path/to/snappy/src/autoload.php '; Use knp/snappy/pdf; Initialize the library by wkhtmltopdf binary path $snappy = new Pdf ('/usr/local/bin/wkhtmltopdf '); Display the Pdfheader (' content-type:application/pdf ') in the browser by setting the Content-type header to PDF, and the header (' Content-disposition: Attachment Filename= "File.pdf"); echo $snappy->getoutput (' http://www.github.com ');
Be aware that your hosting provider may not allow calls to external binaries.
7. idiorm– Lightweight ORM Library
Idiorm is one of the most popular tutorials you've ever used in this website. It is a lightweight ORM library, a PHP5 query builder built on PDO. With it, you can forget how to write tedious sql:
$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;}
Idiorm has a sister library called Paris,paris is a idiorm-based active record implementation.
8. underscore–php's Tool belt
Underscore is an interface of the original Underscore.js –javascript applied tool belt. The PHP version is not disappointing and supports almost all native features. Here are some examples:
__::each (Array (1, 2, 3), function ($num) {echo $num. ‘,‘; }); 1, $multiplier = 2;__::each (Array (, 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)
This library also supports chained syntax, which makes it more powerful.
9. requests– Simple HTTP request
Requests is a library that simplifies HTTP requests. If you are like me, almost never remember the various parameters passed to curl, then it is for you:
$headers = Array (' Accept ' = = ' Application/json '); $options = Array (' auth ' = = Array (' user ', ' pass ')); $request = Reque Sts::get (' https://api.github.com/gists ', $headers, $options); Var_dump ($request->status_code);//int (VAR_) Dump ($request->headers[' content-type ');//string "Application/json; Charset=utf-8 "Var_dump ($request->body);//String (26891)" [...] "
With this library, you can send head, GET, POST, PUT, delte, and patch HTTP requests, you can add files and parameters through an array, and you can access all the corresponding data.
buzz– Simple HTTP Request Library
Buzz is another library that completes HTTP requests. Here is an example:
$request = new Buzz/message/request (' HEAD ', '/', ' http://google.com '); $response = new Buzz/message/response (); $client = New Buzz/client/filegetcontents (); $client->send ($request, $response); echo $request; Echo $response;
Because it lacks documentation, you have to read the source code to learn all the parameters it supports.
Goutte–web Crawl Library
Goutte is a library that crawls Web sites and extracts data. It provides an elegant API that makes it easy to select specific elements from a remote page.
Require_once '/path/to/goutte.phar '; Use goutte/client; $client = new Client (), $crawler = $client->request (' GET ', ' http://www.symfony-project.org/'); Click link $link = $crawler->selectlink (' Plugins ')->link (); $crawler = $client->click ($link); Extract data using a class CSS syntax $t = $crawler->filter (' #data ')->text (); echo "Here is the text: $t";
Carbon–datetime Library
Carbon is a simple extension of the DateTime API.
printf ("Right now was%s", Carbon::now ()->todatetimestring ());p rintf ("Right now in Vancouver is%s", Carbon::now (' America/vancouver '); $tomorrow = Carbon::now ()->addday (); $lastWeek = Carbon::now ()->subweek (); $ Nextsummerolympics = Carbon::createfromdate->addyears (4); $officialDate = Carbon::now () Torfc2822string (); $howOldAmI = Carbon::createfromdate (1975, 5, +)->age; $noonTodayLondonTime = Carbon:: Createfromtime (0, 0, ' Europe/london '), $endOfWorld = Carbon::createfromdate (+, +, ' GMT ');//Always compare with UTC if ( Carbon::now ()->gte ($endOfWorld)) {die ();} if (Carbon::now ()->isweekend ()) { echo ' party! ';} Echo Carbon::now ()->subminutes (2)->diffforhumans (); ' 2 minutes ago '
ubench– Micro-Benchmark Library
Ubench is a miniature library for evaluating PHP code that can monitor (code) execution time and memory usage. Here's an example:
Use ubench/ubench; $bench = new Ubench; $bench->start ();//execute some code $bench->end ();//Get execution consumption time and memory echo $bench GetTime (); 156ms or 1.123secho $bench->gettime (true); Elapsed Microtime in Floatecho $bench->gettime (False, '%d%s '); 156ms or 1secho $bench->getmemorypeak (); 152B or 90.00Kb or 15.23Mbecho $bench->getmemorypeak (true); Memories Peak in bytes memory peaks Echo $bench->getmemorypeak (False, '%.3f%s '); 152B or 90.152Kb or 15.234mb//returns memory usage at the end of the logo echo $bench->getmemoryusage (); 152B or 90.00Kb or 15.23Mb
It is a good idea to run these checks at development time.
validation– Input Validation Engine
Validation claims to be the most powerful authentication engine in the PHP library. But can it be a veritable? See below:
Use Respect/validation/validator as V; Simple verification of the------+ ()->validate ($number); True//chained validation $usernamevalidator = V::alnum ()->nowhitespace ()->length (1,15); $usernameValidator->validate ( ' Alganet '); True//Verify object Properties $user = new StdClass; $user->name = ' Alexandre '; $user->birthdate = ' 1987-07-01 '; Verify his properties in a simple chain $uservalidator = V::attribute (' name ', v::string ()->length (1,32)) ->attribute (' birthdate ') , V::d ate ()->minimumage (18)); $userValidator->validate ($user); True
You can verify your form or other user-submitted data through this library. In addition, it contains a lot of checks, throws exceptions and custom error messages.
filterus– Filter Library
Filterus is another filter library, but it can not only verify, but also filter the output that matches the preset mode. Here is an example:
$f = filter::factory (' String,max:5 '); $str = ' This is a test string '; $f->validate ($STR); False$f->filter ($STR); ' This '
Filterus has a number of built-in patterns that support chained usage and can even validate array elements with independent validation rules.
faker– false Data Generator
Faker is a PHP library that generates fake data for you. It can be useful when you need to populate a test database, or generate test data for your web app. It is also very easy to use:
Reference faker autoloader require_once '/path/to/faker/src/autoload.php ';//use factory creation to create a faker/generator instance $faker = Faker/factory :: Create ();//Generate False data by accessing properties 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 ...
As soon as you continue to access the object properties, it will continue to return randomly generated data.
mustache.php– Elegant Template Gallery
Mustache is a popular template language that has actually been implemented in a variety of programming languages. With it, you can reuse templates in the client or service segment. As you can guess, mustache.php is implemented using PHP.
$m = new Mustache_engine;echo $m->render (' Hello {{planet}} ', Array (' planet ' = ' world! ')); "Hello world!"
It is recommended to take a look at the official website mustache docs to see more advanced examples.
gaufrette– File System Abstraction Layer
Gaufrette is a PHP5 library that provides an abstraction layer of a file system. It makes it possible to manipulate local files in the same way, FTP servers, Amazon S3, or more. It allows you to develop programs without knowing how you will access your files in the future.
Use Gaufrette/filesystem;use gaufrette/adapter/ftp as Ftpadapter;use gaufrette/adapter/local as LocalAdapter; Local file: $adapter = new Localadapter ('/var/media '); Optionally use an FTP adapter//$ftp = new Ftpadapter ($path, $host, $username, $password, $port); Initialize file system $filesystem = new filesystem ($adapter); Use it $content = $filesystem->read (' myFile '); $content = ' Hello I am the new content '; $filesystem->write (' MyFile ', $ content);
There are also cache and memory adapters, and additional adapters will be added later.
omnipay– Payment Processing Library
Omnipay is a PHP payment processing library. It has a clear and consistent API and supports dozens of gateways. Using this library, you just need to learn an API and handle a wide variety of payment processors. Here is an example:
Use Omnipay/creditcard;use omnipay/gatewayfactory; $gateway = gatewayfactory::create (' Stripe '); $gateway Setapikey (' abc123 '); $formData = [' number ' = ' 4111111111111111 ', ' expirymonth ' = 6, ' expiryyear ' = 2016];$ Response = $gateway->purchase ([' Amount ' = +, ' card ' = ' $formData]); if ($response->issuccessful ()) {// Payment success: Update database print_r ($response);} elseif ($response->isredirect ()) {//Jump to Off-site payment gateway $response->redirect () ;} else {//payment failure: Show information to Customer exit ($response->getmessage ());}
With the same consistent API, it is easy to support multiple payment processors, or to switch when needed.
upload– processing file uploads
Upload is a library for simplifying file uploads and validations. When uploading a form, the library verifies the file type and size.
$storage = New/upload/storage/filesystem ('/path/to/directory '); $file = New/upload/file (' foo ', $storage);//verify File Upload $ File->addvalidations (//Ensure file type is "Image/png" new/upload/validation/mimetype (' image/png '),//Ensure file is not more than 5M (use "B", "K", "M" or "G") New/upload/validation/size (' 5M ')));//try to upload a file try {//Success $file->upload ();} catch (/exception $e) {//fail! $errors = $file->geterrors ();}
It will reduce a lot of tedious code.
Htmlpurifier–html XSS Protection
Htmlpurifier is an HTML filtering library that protects your code from XSS attacks with powerful whitelisting and aggregation analysis. It also ensures that the output markings conform to the standard. (Source on GitHub)
Require_once '/path/to/htmlpurifier.auto.php '; $config = Htmlpurifier_config::createdefault (); $purifier = new Htmlpurifier ($config); $clean _html = $purifier->purify ($dirty _html);
If your site allows users to submit HTML code and display the code without modification, then this is the time to use the library.
colorjizz-php– Color Control Library
Colorjizz is a simple library that allows you to convert different color formats and do simple color operations
Use Mischiefcollective/colorjizz/formats/hex; $red _hex = new Hex (0xFF0000), $red _cmyk = $hex->tocmyk (); Echo $red _ Cmyk 0,1,1,0echo hex::fromstring (' Red ')->hue ( -20)->greyscale (); 555555
It already supports and can manipulate all the major color formats.
PHP geo-geo-Location Locator Library
Phpgeo is a simple library for calculating high-precision distances between geographic coordinates. For example:
Use Location/coordinate;use location/distance/vincenty; $coordinate 1 = new Coordinate (19.820664,-155.468066); Mauna Kea Summit Maui Peak $coordinate2 = new Coordinate (20.709722,-156.253333); Haleakala summit$calculator = new Vincenty (), $distance = $calculator->getdistance ($coordinate 1, $coordinate 2); Returns 128130.850 (meters;≈128 kilometers)
It will work well in apps that use geolocation data. You can try to translate HTML5 location API, Yahoo's API (or both, we did this in weather web App tutorial) to get coordinates.
shellwrap– Graceful Command-line wrapper
With the Shellwrap library, you can use powerful Linux/unix command-line tools in your PHP code.
Require ' shellwrap.php '; use/mrrio/shellwrap as SH; Lists all files under the current file echo Sh::ls (); Check out a git branch sh::git (' Checkout ', ' master '); You can also use the pipe to put a command output user another command//below via curl to track the location, and then filter the ' HTML ' pipeline via grep to download the example.com website echo sh::grep (' HTML ', Sh::curl (' http:/ /example.com ', Array ( ' location ' = + true)); Create a new file Sh::touch (' file.html '); Remove file Sh::rm (' file.html '); Remove the file again (this time it failed, and then throw an exception because the file does not exist) try { sh::rm (' file.html ');} catch (Exception $e) { echo ' caught failing sh::rm () Call ';}
When an exception occurs at the command line, the library throws an exception, so you can react to it in a timely manner. It also allows you to get more flexibility by piping the output of one command as input to another command.
24 PHP Libraries You should know