Обзор интересных PHP библиотек. Выпуск -1

Категория: Web разработчику.

overview-of-interesting-php-libraries-issue1_-6337623

Язык программирования PHP выпущен более 20 лет назад, но это не мешает ему по прежнему оставаться одним из самых популярных языков и первым выбором многих back-end разработчиков. Сообщество PHP на GitHub также является одним из самых больших и активных, постоянно появляются новые удивительные проекты. Я подобрал некоторые интересные, на мой взгляд PHP библиотеки с открытым исходным кодом, которые вы можете использовать в своих разработках.

PHPExcel

Набор PHP классов, которые позволяют разработчикам легко реализовать редактирование электронных таблиц в ваших приложениях. Библиотека может читать и писать электронные таблицы в ряд популярных форматов, включая Excel (xls и xlsx), Opendocument (ODT) и CSV.

include 'PHPExcel/IOFactory.php';

$inputFileName = './sampleData/example1.xls';

echo 'Loading file ',pathinfo($inputFileName,PATHINFO_BASENAME),' using IOFactory';
$objPHPExcel = PHPExcel_IOFactory::load($inputFileName);

$sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
var_dump($sheetData);

Opauth

Библиотека позволяет пользователям авторизоваться с помощью своей учетной записи в социальных сетях или других сервисах. Конечно доступны наиболее популярные сети Google, Facebook, Twitter, Github, Instagram, LinkedIn. Opauth поддерживается многими фреймворками, поэтому может быть легко интегрирован в большинство php приложений.

'Strategy' => array(  
    // Define strategies here.

    'Facebook' => array(
        'app_id' => 'YOUR APP ID',
        'app_secret' => 'YOUR APP SECRET'
    ),
);

FastCache

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

use phpFastCacheCacheManager;

$config = array(
    "storage"   =>  "files",
    "path"      =>  "/your_cache_path/dir/",
);
CacheManager::setup($config);

// Try to get from Cache first with an Identity Keyword
$products = CacheManager::get("products");

// If not available get from DB and save in Cache.
if(is_null($products)) {
    $products = "DB SELECT QUERY";
    // Cache your $products for 600 seconds.
    CacheManager::set($cache_keyword, $products,600);
}

Guzzle

Guzzle –это один из лучших http клиентов. Он может обрабатывать почти любые задачи http, которые вы отправляете в него: синхронные и асинхронные запросы, куки http, потоковое видео. Работа с Guzzle очень проста, хорошо написана документация, есть большое количество примеров с подробным объяснением.

$client = new GuzzleHttpClient();
$res = $client->request('GET', 'https://api.github.com/user', [
    'auth' => ['user', 'pass']
]);
echo $res->getStatusCode();
// "200"
echo $res->getHeader('content-type');
// 'application/json; charset=utf8'
echo $res->getBody();
// {"type":"User"...'

// Send an asynchronous request.
$request = new GuzzleHttpPsr7Request('GET', 'http://httpbin.org');
$promise = $client->sendAsync($request)->then(function ($response) {
    echo 'I completed! ' . $response->getBody();
});
$promise->wait();

Twig

Шаблонизатор с очень чистым синтаксисом, который делает разметку короче и проще в написании. Twig предлагает всё что вы ожидаете от современного библиотеки шаблонов: экранирования переменных, циклы, if/else блоки, а также защищенный режим песочницы для проверка кода шаблона.

/ Template HTML


Welcome ! // Rendering require_once '/path/to/lib/Twig/Autoloader.php'; Twig_Autoloader::register(); $loader = new Twig_Loader_Filesystem('/path/to/templates'); $twig = new Twig_Environment($loader, array( 'cache' => '/path/to/compilation_cache', )); echo $twig->render('index.html', array('name' => 'George'));

Goutte

Goutte – это как называемый веб-скребок, который может сканировать веб-сайты и извлекать HTML и XML данные из них. Он посылает запросы на необходимый URL и возвращает объект Crawler, который позволяет разработчику взаимодействовать с удалённой страницей различными способами.

use GoutteClient;
$client = new Client();

// Go to the symfony.com website
$crawler = $client->request('GET', 'http://www.symfony.com/blog/');

// Click on the links
$link = $crawler->selectLink('Security Advisories')->link();
$crawler = $client->click($link);

// Extract data
$crawler->filter('h2 > a')->each(function ($node) {
    print $node->text()."n";
});

PHPMailer

Как же не включить в обзор интересных PHP библиотек PHPMailer. Этот проект поддерживается огромным сообществом и реализуется в популярных системах, таких как WordPress и Drupal, что делает его самым безопасным методом для отправки писем в PHP.

require 'PHPMailerAutoload.php'; $mail = new PHPMailer; $mail->setFrom('Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.', 'Mailer'); $mail->addAddress('Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.');    

$mail->addAttachment('/var/tmp/file.tar.gz');        
$mail->isHTML(true);                                  

$mail->Subject = 'Here is the subject';
$mail->Body    = 'This is the HTML message body in bold!';

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}

Hoa

Hoa – на самом деле не библиотека PHP, а целый набор библиотек, содержащий все виды полезных утили для веб-разработки. Сейчас есть более 50 библиотек и они постоянно пополняются, хотя не все они полностью документированы. Сборка полностью модульная, так что вы можете сами выбрать только необходимые библиотеки.

// Hoa Mail $message = new HoaMailMessage(); $message['From'] = 'Gordon Freeman '; $message['To'] = 'Alyx Vance ';
$message['Subject'] = 'Hoa is awesome!';
$message->addContent(
    new HoaMailContentText('Check this out: http://hoa-project.net/!')
);
$message->send();

// Hoa Session
$user = new HoaSessionSession('user');

if ($user->isEmpty()) {
    echo 'first time', "n";
    $user['foo'] = time();
} else {
    echo 'other times', "n";
    var_dump($user['foo']);
}

ColorExtractor

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

require 'vendor/autoload.php';

use LeagueColorExtractorColor;
use LeagueColorExtractorPalette;

$palette = Palette::fromFilename('./some/image.png');

$topFive = $palette->getMostUsedColors(5);
$colorCount = count($palette);
$blackCount = $palette->getColorCount(Color::fromHexToInt('#000000'));