Khi đã lập trình website thì một điều chắc chắn là bạn phải sử dụng lại các thư viện của người khác đã viết để tiết kiệm thời gian và lỗi phát sinh.

Có rất nhiều thư viện PHP hữu ích phát hành mỗi ngày, và với sự giúp đỡ của Composer và Github, chúng ta dễ dàng khám phá và sử dụng. Dưới đây là một số thư viện thú vị nhất.

1. Dispatch – Micro Framework

Dispatch là một PHP framework nhỏ. Nó không cung cấp cho bạn một thiết lập MVC đầy đủ, nhưng có thể định nghĩa quy định URL và phương pháp tốt hơn ứng dụng của bạn. Hoàn hảo cho các API, các trang web đơn giản hoặc nguyên mẫu:

// include the library
include 'dispatch.php';

// define your routes
get('/greet', function () {
    // render a view
    render('greet-form');
});

// post handler
post('/greet', function () {
    $name = from($_POST, 'name');
    // render a view while passing some locals
    render('greet-show', array('name' => $name));
});

// serve your site
dispatch();

Nếu kết hợp với một số frameworks ở đây, bạn có thể có một thiết lập thực sự mạnh mẽ và vô cùng nhẹ!

2. Klein – Lightning fast router for PHP

Klein là một thư viện định tuyến (routing) nhẹ dành cho PHP 5.3 +. Nó có nhiều hơn một chút cú pháp, nhưng là khá nhanh. Đây là một ví dụ:

respond('/[:name]', function ($request) {
    echo 'Hello ' . $request->name;
});

Bạn cũng có thể đăng ký các phương thức HTTP cụ thể và sử dụng regexes như đường dẫn:

respond('GET', '/posts', $callback);
respond('POST', '/posts/create', $callback);
respond('PUT', '/posts/[i:id]', $callback);
respond('DELETE', '/posts/[i:id]', $callback);

// To match multiple request methods:
respond(array('POST','GET'), $route, $callback);

// Or you might want to handle the requests in the same place
respond('/posts/[create|edit:action]?/[i:id]?', function ($request, $response) {
    switch ($request->action) {
        // do something
    }
});

Điều này là rất tốt cho các dự án nhỏ, nhưng bạn phải xử lý kỷ khi sử dụng một thư viện như thế này cho các ứng dụng lớn hơn, nhưng mã của bạn có thể bảo trì và nâng cấp rất nhanh. Với mục đích này, bạn sẽ được một khung MVC framework đầy đủ như Laravel hoặc CodeIgniter.

3. Ham – Routing Library with Caching

Ham cũng là một khuôn khổ định tuyến nhẹ nhưng nó sử dụng bộ nhớ đệm cho nhiều hơn tăng tốc độ. Nó đạt được điều này bằng cách cache bất cứ điều gì I/O liên quan trong XCache/APC. Đây là một ví dụ:

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/', $hello);
$app->route('/', $hello);

$app->run();

Thư viện đòi hỏi bạn phải có một trong hai XCache hoặc APC được cài đặt, có nghĩa là nó sẽ không hoạt động trên hầu hết các nhà cung cấp hosting. Nhưng nếu bạn kiểm soát máy chủ web của bạn, bạn nên cố gắng dùng framework này.

4. Assetic – Asset Management

Assetic là khuôn khổ quản lý tài sản cho PHP. Nó kết hợp và làm gọn CSS/JS của bạn. Sau đây là cách nó được sử dụng:

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

// the code is merged when the asset is dumped
echo $js->dump();

Kết hợp tài nguyên theo cách này là một ý tưởng tốt, vì nó có thể tăng tốc độ trang web của bạn. Không chỉ là tổng kích thước tải giảm, nhưng cũng có rất nhiều các yêu cầu HTTP không cần thiết được loại bỏ (hai trong những điều đó ảnh hưởng đến thời gian tải trang nhiều nhất).

5. ImageWorkshop – Image Manipulation with Layers

ImageWorkshop là một thư viện mã nguồn mở cho phép bạn thao tác hình ảnh với các lớp. Với nó, bạn có thể thay đổi kích thước, cắt xén, làm cho hình thu nhỏ, thêm thủy ấn và nhiều hơn nữa. Đây là một ví dụ:

// We initialize the norway layer from the picture norway.jpg
$norwayLayer = ImageWorkshop::initFromPath('/path/to/images/norway.jpg'); 

// We initialize the watermark layer from the picture watermark.png
$watermarkLayer = ImageWorkshop::initFromPath('/path/to/images/watermark.png'); 

$image = $norwayLayer->getResult(); // This is the generated image ! 

header('Content-type: image/jpeg');
imagejpeg($image, null, 95); // We choose to show a JPG with a quality of 95%
exit;

ImageWorkshop được phát triển để thực hiện dễ dàng các trường hợp phổ biến nhất cho các thao tác hình ảnh trong PHP. Nếu bạn cần một cái gì đó mạnh mẽ hơn nữa, bạn nên xem xét các Imagine library.

6. Snappy – Snapshot/PDF Library

Snappy là một thư viện PHP5 cho phép bạn chụp những bức ảnh hoặc file PDF của URL hoặc các tài liệu HTML. Nó phụ thuộc vào wkhtmltopdf a> nhị phân, trong đó có sẵn trên Linux, Windows và OSX. Bạn sử dụng nó như thế này:

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

use Knp\Snappy\Pdf; 

// Initialize the library with the
// path to the wkhtmltopdf binary:
$snappy = new Pdf('/usr/local/bin/wkhtmltopdf'); 

// Display the resulting pdf in the browser
// by setting the Content-type header to pdf: 

header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="file.pdf"'); 

echo $snappy->getOutput('http://www.github.com');

Hãy nhớ rằng những chương trình được gọi bên ngoài có thể không được cho phép bởi nhà cung cấp hosting của bạn.

7. Idiorm – Lightweight ORM Library

Idiorm là một thư viện ORM nhẹ và một người xây dựng truy vấn thông thạo cho PHP5 được xây dựng trên đầu trang của PDO. Với nó, bạn có thể quên viết tẻ nhạt của 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 có một thư viện em gái tên Paris a>, mà là một thực hiện Active Record được xây dựng trên đầu của nó.

8. Underscore – PHP’s Utility Belt

Underscore là một cổng của Underscore.js a> - vành đai tiện ích cho các ứng dụng JavaScript. Phiên bản PHP không thất vọng và đã hỗ trợ cho gần như tất cả các chức năng của bản gốc. Một số ví dụ:

__::each(array(1, 2, 3), function($num) { echo $num . ','; }); // 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)

Thư viện cũng đã hỗ trợ cho chuỗi, mà làm cho nó thậm chí còn mạnh mẽ hơn.

9. Requests – Easy HTTP Requests

Requests is a library that makes it easy to issue HTTP requests. If you are like me, and can never seem to remember the various options passed to Curl, this is for you: là một thư viện làm cho nó dễ dàng để đưa ra các yêu cầu HTTP. Nếu bạn không bao giờ có thể nhớ các tùy chọn khác nhau thông qua Curl, điều này là dành cho bạn:

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

Với thư viện này, bạn có thể gửi HEAD, GET, POST, PUT, DELETE và các yêu cầu HTTP, thêm các tập tin và các thông số với mảng, và truy cập tất cả các dữ liệu được đáp ứng.

10. Buzz – Simple HTTP Request Library

Buzz \ là một thư viện PHP cho các yêu cầu HTTP. Đây là một ví dụ:

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

Nó thiếu các tài liệu hướng dẫn, vì vậy bạn sẽ phải đọc thông qua các mã nguồn để có được một cảm giác của tất cả các tùy chọn mà nó hỗ trợ.

11. Goutte – Web Scraping Library

Goutte là một thư viện để quét trang web và giải nén dữ liệu. Nó cung cấp một API tốt đẹp mà làm cho nó dễ dàng để lựa chọn các yếu tố cụ thể từ các trang từ xa.

require_once '/path/to/goutte.phar'; 

use Goutte\Client; 

$client = new Client();
$crawler = $client->request('GET', 'http://www.symfony-project.org/'); 

// Click on links: 

$link = $crawler->selectLink('Plugins')->link();
$crawler = $client->click($link); 

// Extract data with a CSS-like syntax: 

$t = $crawler->filter('#data')->text(); 

echo "Here is the text: $t";

12. Carbon – DateTime Library

Carbon là một API mở rộng đơn giản cho ngày và giờ. Nó giúp tăng cường các một số phương pháp hữu ích để làm việc với ngày và thời gian. Ví dụ:

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

// comparisons are always done in UTC
if (Carbon::now()->gte($endOfWorld)) {
    die();
}

if (Carbon::now()->isWeekend()) {
    echo 'Party!';
}

echo Carbon::now()->subMinutes(2)->diffForHumans(); // '2 minutes ago'

13. Ubench – Micro Benchmarking Library

Ubench là một thư viện nhỏ cho chuẩn mã PHP của bạn. Nó theo dõi thời gian thực hiện và sử dụng bộ nhớ. Đây là một ví dụ:

use Ubench\Ubench;

$bench = new Ubench;

$bench->start();

// Execute some code

$bench->end();

// Get elapsed time and memory
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

// Returns the memory usage at the end mark
echo $bench->getMemoryUsage(); // 152B or 90.00Kb or 15.23Mb

Nó sẽ là một ý tưởng tốt để chạy kiểm tra trong khi đang phát triển.

14. Validation – Input Validation Engine

Validation tuyên bố là công cụ xác nhận tuyệt vời nhất từng được tạo ra cho PHP. Nhưng nó có thể cung cấp được gì?

use Respect\Validation\Validator as v; 

// Simple Validation 

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

// Chained Validation 

$usernameValidator = v::alnum()->noWhitespace()->length(1,15);
$usernameValidator->validate('alganet'); //true 

// Validating Object Attributes 

$user = new stdClass;
$user->name = 'Alexandre';
$user->birthdate = '1987-07-01'; 

// Validate its attributes in a single chain: 

$userValidator = v::attribute('name', v::string()->length(1,32))
                  ->attribute('birthdate', v::date()->minimumAge(18)); 

$userValidator->validate($user); //true

Với thư viện này, bạn có thể xác nhận các dữ liệu người dùng gửi. Ngoài ra, nó hỗ trợ một số lượng lớn các kiểm tra hiện có, ngoại lệ và thông báo lỗi tùy chỉnh.

15. Filterus – Filtering Library

Filterus là một thư viện bộ lọc, nhưng nó có thể không chỉ xác nhận, nhưng cũng đầu vào bộ lọc để phù hợp với một mô hình định sẵn. Đây là một ví dụ:

$f = Filter::factory('string,max:5');
$str = 'This is a test string'; 

$f->validate($str); // false
$f->filter($str); // 'This '

Filterus có rất nhiều mô hình tích hợp, hỗ trợ chuỗi và thậm chí có thể xác nhận các phần tử mảng với quy tắc xác nhận cá nhân.

16. Faker – Fake Data Generator

Faker là một thư viện PHP tạo ra các dữ liệu giả mạo cho bạn. Nó tiện dụng khi bạn cần phải một cơ sở dữ liệu thử nghiệm hoặc tạo ra các dữ liệu mẫu cho ứng dụng web của bạn. Nó cũng rất dễ dàng để sử dụng:

// require the Faker autoloader
require_once '/path/to/Faker/src/autoload.php';

// use the factory to create a Faker\Generator instance
$faker = Faker\Factory::create();

// generate 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 ...

Miễn là bạn tiếp tục truy cập vào các thuộc tính của đối tượng, nó sẽ tiếp tục quay trở lại dữ liệu ngẫu nhiên tạo ra.

17. Mustache.php – Elegant Templating Library

Mustache là một ngôn ngữ khuôn mẫu phổ biến mà có thể triển khai trong thực tế tất cả các ngôn ngữ lập trình. Điều này cung cấp cho bạn những lợi ích mà bạn có thể sử dụng lại mẫu của bạn trong cả khách hàng và phía máy chủ. Mustache.php a> là một thực hiện sử dụng - bạn đoán nó - PHP:

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

Để xem nhiều ví dụ tiên tiến hơn Mustache docs.

18. Gaufrette – File System Abstraction Layer

Gaufrette là một thư viện PHP5 cung cấp một lớp trừu tượng hệ thống tập tin. Nó làm cho nó có thể làm việc với các tập tin địa phương, máy chủ FTP, Amazon S3 và nhiều hơn nữa trong cùng một cách. Điều này cho phép bạn phát triển các ứng dụng của bạn mà không cần phải biết làm thế nào bạn sẽ truy cập các tập tin của bạn trong tương lai.

use Gaufrette\Filesystem;
use Gaufrette\Adapter\Ftp as FtpAdapter;
use Gaufrette\Adapter\Local as LocalAdapter; 

// Local files:
$adapter = new LocalAdapter('/var/media'); 

// Optionally use an FTP adapter:
// $ftp = new FtpAdapter($path, $host, $username, $password, $port); 

// Initialize the filesystem:
$filesystem = new Filesystem($adapter); 

// Use it: 

$content = $filesystem->read('myFile');
$content = 'Hello I am the new content';
$filesystem->write('myFile', $content);

Ngoài ra còn có bộ nhớ đệm và bộ điều hợp trong bộ nhớ, và nhiều hơn nữa sẽ được bổ sung theo thời gian.

19. Omnipay – Payment Processing Library

Omnipay là một thư viện xử lý các thanh toán cho PHP. Nó có một API rõ ràng và nhất quán và hỗ trợ hàng chục cổng thanh toán. Với thư viện này, bạn chỉ cần tìm hiểu một API và làm việc với nhiều bộ xử lý thanh toán. Đây là một ví dụ:

use Omnipay\CreditCard;
use Omnipay\GatewayFactory;

$gateway = GatewayFactory::create('Stripe');
$gateway->setApiKey('abc123');

$formData = ['number' => '4111111111111111', 'expiryMonth' => 6, 'expiryYear' => 2016];
$response = $gateway->purchase(['amount' => 1000, 'card' => $formData]);

if ($response->isSuccessful()) {
    // payment was successful: update database
    print_r($response);
} elseif ($response->isRedirect()) {
    // redirect to offsite payment gateway
    $response->redirect();
} else {
    // payment failed: display message to customer
    exit($response->getMessage());
}

Sử dụng các API nhất quán cùng làm cho nó dễ dàng để hỗ trợ nhiều bộ xử lý thanh toán hoặc chuyển đổi khi có nhu cầu.

20. Upload – For Handling File Uploads

Upload là một thư viện đơn giản hóa tập tin tải lên và xác nhận. Khi một mẫu được gửi, thư viện có thể kiểm tra các loại tập tin và kích thước:

$storage = new \Upload\Storage\FileSystem('/path/to/directory');
$file = new \Upload\File('foo', $storage);

// Validate file upload
$file->addValidations(array(
    // Ensure file is of type "image/png"
    new \Upload\Validation\Mimetype('image/png'),

    // Ensure file is no larger than 5M (use "B", "K", M", or "G")
    new \Upload\Validation\Size('5M')
));

// Try to upload file
try {
    // Success!
    $file->upload();
} catch (\Exception $e) {
    // Fail!
    $errors = $file->getErrors();
}

nó giúp tiết kiệm rất nhiều dòng code.

21. HTMLPurifier – HTML XSS Protection

HTMLPurifier (on github) là một thư viện lọc HTML để bảo vệ mã của bạn từ các cuộc tấn công XSS (CROSS SITE SCRIPTING). Nó cũng đảm bảo rằng các đánh dấu kết quả là tiêu chuẩn phù hợp.

require_once '/path/to/HTMLPurifier.auto.php';

$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
$clean_html = $purifier->purify($dirty_html);

Nơi tốt nhất để sử dụng thư viện này là khi bạn đang cho phép người dùng HTML để sửa đổi nội dung trên trang web.

22. ColorJizz-PHP – Color Manipulation Library

ColorJizz là một thư viện nhỏ mà có thể chuyển đổi giữa các định dạng màu sắc khác nhau và làm phép tính đơn giản, màu sắc. Ví dụ:

use MischiefCollective\ColorJizz\Formats\Hex;

$red_hex = new Hex(0xFF0000);
$red_cmyk = $hex->toCMYK();
echo $red_cmyk; // 0,1,1,0

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

Nó hỗ trợ và có thể thao tác tất cả các định dạng màu sắc.

23. PHP Geo – Geo Location Library

phpgeo là một thư viện đơn giản để tính toán khoảng cách giữa các tọa độ địa lý với độ chính xác cao. Ví dụ:

use Location\Coordinate;
use Location\Distance\Vincenty;

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

Điều này sẽ làm việc tốt trong các ứng dụng có sử dụng dữ liệu vị trí. Để có được tọa độ, bạn có thể sử dụng HTML5 từ API, API của Yahoo (hoặc cả hai, như chúng tôi đã làm trong ứng dụng thời tiết web hướng dẫn a>).

24. ShellWrap – Beautiful Shell Wrapper

ShellWrap là thư viện cho phép bạn làm việc với các công cụ dòng lệnh Linux / Unix mạnh mẽ trong PHP thông qua một cú pháp đẹp:

require 'ShellWrap.php';
use \MrRio\ShellWrap as sh; 

// List all files in current dir
echo sh::ls(); 

// Checkout a branch in git
sh::git('checkout', 'master'); 

// You can also pipe the output of one command, into another
// This downloads example.com through cURL, follows location, then pipes through grep to
// filter for 'html'
echo sh::grep('html', sh::curl('http://example.com', array(
    'location' => true
))); 

// Touch a file to create it
sh::touch('file.html'); 

// Remove file
sh::rm('file.html'); 

// Remove file again (this fails, and throws an exception because the file doesn't exist) 

try {
    sh::rm('file.html');
} catch (Exception $e) {
    echo 'Caught failing sh::rm() call';
}

Thư viện sẽ ném ngoại lệ khi một lỗi xảy ra trong lệnh, do đó bạn có thể hành động phù hợp. Nó cũng có đường ống đầu ra của một lệnh như đầu vào của một sự linh hoạt lớn hơn.

Xem nhiều nhất

Cách khôi phục dữ liệu đã xóa trên máy tính
Ngày: 08.07.2013 - Lượt xem: 48,269 lần

Cách tăng tốc khởi động máy tính
Ngày: 08.07.2013 - Lượt xem: 19,512 lần

Tổng hợp hosting Free tốt nhất hiện nay
Ngày: 08.07.2013 - Lượt xem: 11,065 lần

7 cách dễ dàng để tăng tốc độ MySQL
Ngày: 21.08.2013 - Lượt xem: 10,504 lần

Danh sách Blog cho phép link DoFollow
Ngày: 07.09.2013 - Lượt xem: 8,741 lần

Các thư viện PHP hữu ích bạn nên biết
Ngày: 19.07.2013 - Lượt xem: 8,615 lần

Bốn bước đơn giản làm cho WordPress nhanh hơn
Ngày: 25.08.2013 - Lượt xem: 7,582 lần

Xem thêm

Danh sách Blog cho phép link DoFollow
Ngày: 07.09.2013 - Lượt xem: 8,741 lần

Bốn bước đơn giản làm cho WordPress nhanh hơn
Ngày: 25.08.2013 - Lượt xem: 7,582 lần

7 cách dễ dàng để tăng tốc độ MySQL
Ngày: 21.08.2013 - Lượt xem: 10,504 lần

Làm thế nào để cấu hình Hotmail trong Outlook 2007
Ngày: 15.08.2013 - Lượt xem: 3,576 lần

Penguin và Panda? Làm thế nào để SEO tốt và phục hồi
Ngày: 13.08.2013 - Lượt xem: 1,722 lần

Facebook open graph meta tags
Ngày: 03.08.2013 - Lượt xem: 3,776 lần

Mẹo tăng tốc website
Ngày: 28.07.2013 - Lượt xem: 4,245 lần

Tạo id giống Youtube với PHP/Python/Javascript/Java/SQL
Ngày: 20.07.2013 - Lượt xem: 3,194 lần

Làm sitemap trực tuyến cho website
Ngày: 09.07.2013 - Lượt xem: 1,030 lần

Tìm hiểu khách hàng trong lĩnh vực Design
Ngày: 09.07.2013 - Lượt xem: 1,660 lần