Авторизация







Регистрация / Забыли пароль?

Регистрация нового пользователя











< Назад

Восстановление пароля





< Назад

Добро пожаловать

Выход


Ежедневное обновление статей и уроков, будь в курсе, держи руку на пульсе событий!

Главная >> PHP

24 классных PHP библиотеки, о которых вы должны знать


Для PHP-разработчика, и времени лучшего не придумаешь чем сейчас. Ведь каждый день, появляются всё новые и новые вспомогательные элементы, такие, как например полезные библиотеки.

 

    Легко и просто, вы можете найти их здесь Composer или здесь Github. Я отобрал 24 варианта, о которых мне хотелось бы вам рассказать. Нравится библиотека которой нет в статье? Отпишитесь в комментариях)будет интересно.

 

    1. Dispatch – Микро фреймворк

    Dispatch является небольшим PHP фреймворком. Он не даст вам полной власти над MVC, но с его помощью, вы сможете лучше организовывать ваши приложения, указывая URL, правила и методы. Это идеально подходит для API простых сайтов и их прототипов:

// подключаем библиотеку
include 'dispatch.php';

// определяем наши маршруты
get('/greet', function () {
    // выводим на экран
    render('greet-form');
});

// после обрабатываем
post('/greet', function () {
    $name = from($_POST, 'name');
    // выводим список подключений
    render('greet-show', array('name' => $name));
});

// здесь что-то делает ваш сайт
dispatch();

    Вы можете работать как с HTTP запросами, так и с директориями необходимыми для работы системы. Объединение dispatch с другими средствами, так же может увеличить гибкость и мощность вашего проекта.

    2. Klein – Молниеносный маршрутизатор PHP

    Klein - еще один маршрутизатор для PHP 5.3+ имеющий легкий вес. Он имеет довольно не простой синтаксис, но работает очень быстро. Вот пример:

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

    Вы также можете использовать определенные HTTP-запросы, и регулярные выражения в путях:

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) {
        // что-то делаем
    }
});

    Это очень удобно для небольших проектов, но используя библиотеку,  вы должны быть дисциплинированным, ведь код может стать очень сложен в понимании, и неподдерживаемым. Другие варианты с полномасштабным MVC фреймворком это Laravel или CodeIgniter.

    3. Ham – Библиотека маршрутизации с кэшированием

    Ham – является простой библиотекой маршрутизации, но она использует кэширование, что ещё более увеличивает её быстродействие. Достигается это путём кэширования XCache/APC. Вот пример:

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

    Библиотека требует либо XCache либо APC, что означает, что возможно она не станет работать на большинстве хостингов. Но если вы можете установить их на свой веб-сервер, то проблем не будет.

    4. Assetic – Управление путями

    Assetic – это фреймворк PHP представляющий собой упрощение работы с путями. Он является минималистичным, и годится для работы с путями CSS/JS. Вот как его можно использовать:

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

// код объединяется, когда пути готовы
echo $js->dump();

    Подключать все необходимые файлы благодаря одной строке, очень хорошая идея, так как может увеличить скорость загрузки вашего сайта. Как мы видим, уменьшается сам размер объявляемых данных, отпадает надобность в дополнительных HTTP запросах.

    5. ImageWorkshop – Манипуляция со слоями изображений

    ImageWorkshop является библиотекой с открытым исходным кодом, что даёт гибкость в работе с изображениями. С его помощью вы можете изменить размер, обрезать, сделать эскиз, добавить водяной знак и многое другое. Вот пример:

// Мы инициализируем Norway слой из изображения norway.jpg
$norwayLayer = ImageWorkshop::initFromPath('/path/to/images/norway.jpg'); 

// Мы инициализируем водяной слой из изображения watermark.png
$watermarkLayer = ImageWorkshop::initFromPath('/path/to/images/watermark.png'); 

$image = $norwayLayer->getResult(); // Создаём образ! 

header('Content-type: image/jpeg');
imagejpeg($image, null, 95); // Мы выбираем, JPG с качеством, 95%
exit;

    ImageWorkshop разработан для облегчения работы с распространёнными случаями манипулирования изображениями в PHP. Если вас интересуют инструменты по мощнее, вы можете поискать их здесь Imagine library.

    6. Snappy – Библиотека Снимок/PDF

    Snappy-PHP5 библиотека, которая позволяет делать снимки URL , PDF или HTML-документа.  Библиотека работает с wkhtmltopdf двоичным файлом, который доступен для Linux, Windows и Mac. Вы можете использовать её так:

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

use Knp\Snappy\Pdf; 

// Инициализация библиотеки с
// путь к wkhtmltopdf бинарному файлу:
$snappy = new Pdf('/usr/local/bin/wkhtmltopdf'); 

// Дисплей в результате станет pdf в браузере
// путем настройки Content-type header to pdf: 

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

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

    Имейте в виду, что вызов внешних исполняемых файлов может быть не разрешен вашим хостинг-провайдером.

    7. Idiorm - Легкая библиотека ORM 

    Idiorm – моя любимая библиотека, я часто её использую в уроках и статьях. Она очень маловесна, при том что является ORM библиотекой и хорошо работает с PHP5 библиотекой PDO. Используя её, вы можете забыть о скучном коде 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 имеет дочернюю библиотеку, называемую Paris, она облегчает работу с записью.

    8. Underscore – PHP утилиты

    Underscore является PHP реализацией, JavaScript библиотеки Underscore.js. PHP версия вас не разочарует, так как имеет почти такой же набор функций то и JS прототип. Вот несколько примеров:

__::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) . ',';
});
// будет: 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)

    Библиотека также имеет поддержку интеграции, которая делает её еще более мощной.

    9. Requests – простые HTTP запросы

    Requests  - это библиотека, которая позволяет легко выдать HTTP-запросы. Если вы иногда забываете параметры, которые передаются в запросах, например Curl, то это решение для вас:

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

    С этой библиотеки, вы можете отправить HEAD , GET, POST, PUT, DELETE, и PATCH HTTP-запросы, добавить файлы и параметры с массива, и получить доступ ко всем данным ответов.

    10. Buzz – Библиотека простых HTTP запросов

    Buzz – ещё одна PHP-библиотека для выдачи запросов HTTP. Вот пример:

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

    Чтобы увидеть всё на что способна данная библиотека, вы можете найти соответствующую документацию, или посмотреть исходный код. Так же, вы может сформировать запрос, как я сделал выше.

    11. Goutte – Библиотека циклов

    Goutte-это библиотека, упрощающает работу с извлечением данных загруженных с веб-сайтов. Она обеспечивает хороший API, который позволяет легко выбрать конкретные элементы из удаленных страниц.

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

use Goutte\Client; 

$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. Carbon – Библиотека даты и времени

    Carbon  - это просто расширение API для работы с датой и временем. Содержит в себе несколько полезных методов для облегчения работы. Например:

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 минуты спустя

    Carbon – уже несколько месяцев не улучшается, но вы можете спокойно с ним работать.

    13. Ubench - Микро бенчмаркинг библиотека

    Ubench микро-библиотека для тестирования вашего PHP-кода. Он следит за временем выполнения и использования памяти. Вот пример:

use Ubench\Ubench;

$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); // памяти пика в байтах
echo $bench->getMemoryPeak(false, '%.3f%s'); // 152B or 90.152Kb or 15.234Mb

// Возвращает использованную память в конце работы
echo $bench->getMemoryUsage(); // 152B или 90.00Kb или 15.23Mb

    Отличная идея во время разработки и тестирования веб-системы.

    14. Validation – Проверка входных данных

    Проблема проверки всех поступающих данных, всегда актуальна. Данная библиотека, сможет помочь вам с этим, как? Смотрите сами:

use Respect\Validation\Validator 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

    С помощью этой библиотеки, вы сможете проверить поступившие данные с формы заполненные пользователем. Кроме того, она поддерживает множество различных форматов данных, и генерирует сообщения об ошибках.

    15. Filterus - Библиотека фильтрации

    Filterus может проверить не только входные данные по заданному шаблону, так же, вы можете указать свой. Вот пример:

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

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

    Filterus имеет множество встроенных шаблонов, поддерживает цепочки и может даже проверить элементы массива с разными правилами проверки.

    16. Faker - Подделка генератора даты

    Faker  - это PHP-библиотека, которая создает фальшивые данные для вас. Это может пригодиться, когда вам нужно заполнить тестовыми данными базу данных, или сформировать выборку данных для вашего web-приложения. Очень прост в использовании:

// Загружаем необходимые файлы
require_once '/path/to/Faker/src/autoload.php';

// Используем Faker\Generator для создания
$faker = Faker\Factory::create();

// получения данных от доступа к свойствам
echo $faker->name; // 'Lucy Cechtelar';

echo $faker->address;
  // "426 Jordy Lodge
  // Cartwrightshire, SC 88120-6700"

echo $faker->text;
  // Sint velit eveniet. Rerum atque repellat voluptatem quia ...

    Пока вы сохраняете доступ к свойствам объекта, он будет продолжать возвращаться случайно сгенерированные данные.

    17. Mustache.php - Элегантная библиотека шаблонов

    Mustache популярный язык шаблонов, реализован практически во всех языках программирования. Это дает вам преимущество, в использовании шаблонов, как для: клиентской стороны, так и для стороны сервера. Mustache.php - реализация, которая использует, как  вы уже догадались - PHP:

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

    Чтобы увидеть более сложные примеры, я предлагаю взглянуть на официальный сайт Mustache.

    18. Gaufrette - Абстракция файловой системы

    Gaufrette-PHP5, библиотека, предоставляющая абстракцию файловой системы. Это позволяет работать с локальными файлами, серверами FTP, Amazon S3, и так далее. Простыми строками кода, мы можем создавать и получать доступ к своим файлам, хранящимся где-то.

use Gaufrette\Filesystem;
use Gaufrette\Adapter\Ftp as FtpAdapter;
use Gaufrette\Adapter\Local 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);

    Библиотека имеет механизм кэширования, а так же, идёт постоянное её усовершенствование, и очень скоро, будут добавлены новые возможности.

    19. Omnipay - Библиотека платежей 

    Omnipay – это библиотека PHP  для обработки платежей. Она имеет пользовательский интерфейс для встраивания во всевозможные порталы и системы управления контентом. Для того чтобы начать с ней работать, нужно знать один лишь API-интерфейс, с его помощью, вы будете управлять различными способами оплаты. Вот пример:

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()) {
    // выплата была успешной: обновление базы данных
    print_r($response);
} elseif ($response->isRedirect()) {
    // перенаправить на удаленном платежный шлюз
    $response->redirect();
} else {
    // оплата не удалось: на дисплее сообщение для клиентов
    exit($response->getMessage());
}

    Использование одного и того же последовательного API упрощает поддержку нескольких платежных систем, и необходимость переключаться отпадает.

    20. Upload - Для обработки загружаемых файлов

    Upload - это библиотека, которая упрощает загрузку и проверку файлов. Если форма отправлена, библиотека может проверить тип файла и размер:

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

// Проверка загрузки файла
$file->addValidations(array(
    // Отбирать только "image/png"
    new \Upload\Validation\Mimetype('image/png'),

    // Отбирать файл не более 5M (use "B", "K", M", or "G")
    new \Upload\Validation\Size('5M')
));

// Попробуйте загрузить файл
try {
    // Верно!
    $file->upload();
} catch (\Exception $e) {
    // Ошибка!
    $errors = $file->getErrors();
}

    Это сэкономит вам много громоздкого кода.

    21. HTMLPurifier - HTML XSS Защита

    HTMLPurifier (на github) является библиотекой фильтрующей весь HTML, и защищает ваш код от XSS-атак, используя сочетание надежных белых списков и агрессивного метода отбора. Она также может проверить вашу разметку на соответствие стандарту.

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

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

    Лучшим местом использования данной библиотеки, я считаю то место, где пользователь может самостоятельно создавать HTML код, например комментарии, форум, и т.д.

    22. ColorJizz-PHP - Библиотека манипуляций с цветом

    ColorJizz-крошечная библиотека, которая может конвертировать форматы цвета из одного в другой. Например:

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

    Она поддерживает и может манипулировать всеми основными форматами цветов.

    23. PHP Geo – Библиотека ГЕО локации

    phpgeo это простая библиотека для расчета расстояния между географическими координатами с высокой точностью. Например:

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); // возвращает 128130.850 (meters; ≈128 kilometers)

    Это будет замечательно работать в приложениях, которые используют данные о местоположении. Чтобы получить координаты, вы можете использовать HTML5 Местоположение API, Yahoo API.

    24. ShellWrap - Красивая Shell-Оболочка

    ShellWrap-это библиотека, которая позволяет работать с Linux/Unix утилитами командной строки в PHP через красивую оболочку:

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

// Список всех файлов в текущей папке
echo sh::ls(); 

// Проверка ветвления в  git
sh::git('checkout', 'master'); 

// Вы также можете направить вывод одной команды в другую
// Скачайте example.com через cURL, в следующую локацию, и установите
// фильтр для 'html'
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';
}

    Если во время работы, возникает ошибка, то библиотека генерирует исключение, и вы сможете действовать по случаю. Для обеспечения большей гибкости, вывод одной командной строки, может быть вводом для другой.

    Материал взят из зарубежного источника. И представлен исключительно в ознакомительных целях.


Дата публикации: 26.02.2013
Опубликовал: Сергей Кашурин
Просмотров: 1275
Правила перепечатки

Правила перепечатки

Уважаемый посетитель сайта!
Ниже преведены условия использования и перепечатки материалов сайта /
Все материалы данного сайта подготовлены для Вас лично мной.

Большая часть материалов сайта - это авторские уроки, остальные, это переводы уроков с английского языка на русский.
Если Вы решили использовать материалы данного сайта где-то на своих ресурсах или в рассылке, то соблюдайте следующие требования:
1. Урок или статья должны перепечатываться «как есть» с сохранением всех ссылок на источник урока, а если это перевод, то и на сайт, авторы которого подготовили его.
2. Ссылки на сайт источника и переводчика обязательно должны быть работоспособными (при нажатии по ссылке человек должен перейти на сайт автора/переводчика). Если Вы перепечатали какой-либо документ, обязательно проверьте ссылку на работоспособность.
3. Искажение информации об авторе, источнике, переводчике при перепечатке материалов запрещено!
4. Содержание урока или статьи при перепечатке не должно подвергаться модификациям и переделке. Все уроки и статьи, размещенные на сайте, должны перепечатываться как есть. Вы не имеете права урезать, исправлять или иным образом коверкать републикуемый документ.
С уважением, Сергей Кашурин– владелец сайта /


110 бесплатных PSD элементов, для ваших слайдеров, лент, выпадающих меню навигации и аудио видео проигрывателей
Используйте бесплатно распространяемую графику, вместо того, чтобы тратить ваше драгоценное время, особенно, когда дело доходит до веб дизайна. Ведь его вы можете потратить на более нужные вещи, такие как проявление творчества. Чтобы сделать из вашего проекта конфетку, ниже приведены 110 бесплатных PSD элементов для создания слайдеров, лент, выпадающих меню навигации и аудио видео проигрывателей, полученных нами с различных веб-сайтов и отдельных лиц, которые вносят вклад в графику для дизайнеров, абсолютно бесплатно.
BOOKBLOCK - плагин пролистывания контента
Давайте знакомиться с jQuery плагином, с помощью которого мы сможем создавать буклет контента, и перемещаться по нему листая содержимое.
25 поразительных анимаций CSS3, которые улучшат внешний вид вашего сайта
CSS3, сокращение от английского Cascading Style Sheets 3, третье поколение таблиц стилей, которые используются для визуального представления сайта, при минимальном размере кода. Этот последний многообещающий набор стандартов, состоит из большого числа функций и инструментов, которые позволяют улучшить и контролировать дизайн и увеличивать скорость загрузки сайта.

Уроки и статьи

«Найден Самый Дешевый и Эффективный Способ Рекламы в Интернете!»

Доказанo: ведение своей почтовой рассылки - это самый действенный и дешевый метод рекламы в Интернете.

Используете ли Вы его?

Если нет, то Вы давно теряете свои деньги! Если да, то пришло время вести Вашу почтовую рассылку на самом эффективном инструменте в Рунете - сервисе рассылок SmartResponder.ru

Узнать об этом подробнее >>

Быть в курсе всех событий: