Категория: Web разработчику.
Язык программирования 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'));