Многие программисты при выполнении каких-то задач пишут свои собственные решения, часто забывая о том, что эта же задача, скорее всего, уже давно решена другим разработчиком намного эффективней и качественней.
Tproger собрал 8 существующих библиотек и инструментов, функциональность которых чаще всего реализуют самостоятельно. Они пригодятся любому веб-разработчику: если не сейчас, то в будущем их знание избавит вас от траты времени на написание своих велосипедов.
Imanee
Пожалуйста, хватит писать свои функции для работы с графикой!
Imanee предоставляет высокоуровневое API генерации и разнообразной обработки изображений всех популярных форматов. Написав всего пару строчек с использованием Imanee, вы сможете наложить копирайт, ватермарк или совершить более сложную операцию. Библиотека имеет подробную документацию и отличается высоким быстродействием.
Чтобы окончательно убедить вас не писать что-то своё, приведем несколько примеров.
Создать гифку, включающую в себя, например, все изображения в папке, можно всего одной строкой:
echo Imanee::globAnimate('resources/*.jpg');
То же самое касается и установки на изображение своего копирайта:
$imanee->placeText('imanee test', 40, Imanee::IM_POS_MID_CENTER)->output();
Официальный GitHub репозиторий: Imanee
Сайт с документацией и котиком: Imanee.io
PHP Benchmark
Перестаньте писать свои решения с запоминанием таймстампов в переменные и сравнением, ваши проблемы решает PHP Benchmark — бесплатная библиотека с открытыми исходниками.
Она ведет учет не только времени выполнения, но и использованной памяти и других параметров.
Подключив PHP Benchmark и прописав в нужных местах следующую строчку:
\PHPBenchmark\Monitor::instance()->snapshot('Plugins loaded');
можно получить детальный отчет по работе приложения.
Вот пример для популярной платформы WordPress:
Подробную документацию, как и исходники, вы можете найти на гитхабе: PHP-Benchmark
RegExp Builder
Являясь бесплатным портом известной JavaScript библиотеки, PHP RegExp Builder позволяет полностью забыть о регулярках, их синтаксисе и искусстве написания. С использованием этого инструмента валидацию, поиск и замену сложных по структуре данных — основные области применения регулярных выражений — стало делать ещё проще.
Выражения, созданные в Builder’е, легко читать и изменять — всё состоит из так называемых «цепочек».
Пример создания регулярного выражения с RegExp Builder:
$regExp = $builder
->startOfInput()
->exactly(4)->digits()
->then("_")
->exactly(2)->digits()
->then("_")
->min(3)->max(10)->letters()
->then(".")
->anyOf(array("png", "jpg", "gif"))
->endOfInput()
->getRegExp();
Скачать библиотеку можно на GitHub: RegExp Builder
Там же доступна и документация: RegExp Builder Wiki
PHP FaceDetection
Определение лиц на фотографиях не является распространенной задачей, тем не менее, знание о том, что такая библиотека существует, вам пригодится.
PHP FaceDetection — это серверная адаптация одноименного JS-фреймворка от Котика Тхеравада, с помощью которой, написав всего пару строчек, вы получите координаты лица на изображении в удобном формате.
Пример:
$face_detect->face_detect('sample-image3.jpg');
Ссылка на GitHub: PHP FaceDetection
Mobile Detect
Mobile Detect — легковесный класс с открытым исходным кодом, предназначенный для определения модели мобильного устройства клиента. Для «детекта» он использует User-Agent в сочетании с HTTP заголовками и свою обширную базу данных — это делает количество ложных срабатываний минимальным.
Даже несмотря на то, что для адаптивного дизайна сегодня используются Media Queries, скрипт всё равно может быть полезен: например, вы можете отдавать мобильным пользователям более легковесные изображения, тем самым ускоряя загрузку сайта.
Простейший пример:
if ( $detect->isMobile() ) {
// пользователь зашел с телефона!
}
Рабочее демо: demo.mobiledetect.net
Документация и ссылка на скачивание: mobiledetect.net
ABLincoln
ABLinkoln — написанная на PHP реализация фреймворка PlanOut от Facebook, предназначенного для A/B тестов — тестов, использующихся для оценки эффективности веб-страницы и повышения конверсии, или, другими словами, сплит-тестирования.
ABLincoln значительно упрощает этот процесс, предоставляя программисту возможность легко развертывать и поддерживать сложные эксперименты на больших проектах с широкой аудиторией.
Например, чтобы поставить эксперимент с двумя видами надписи и цвета кнопки, нужно создать вот такой простой класс:
use \Vimeo\ABLincoln\Experiments\SimpleExperiment;
use \Vimeo\ABLincoln\Operators\Random as Random;
class MyExperiment extends SimpleExperiment
{
public function assign($params, $inputs)
{
$params->button_color = new Random\UniformChoice(
['choices' => ['#ff0000', '#00ff00']],
$inputs
);
$params->button_text = new Random\WeightedChoice(
[
'choices' => ['Join now!', 'Sign up.'],
'weights' => 1
],
$inputs
);
}
}
Документация, исходники и примеры кода — на GitHub.
phpQuery
Задача спарсить некую информацию со стороннего сайта встает перед веб-разработчиком очень часто: таким образом можно заполнить контентом собственный сайт, динамически подгрузить какую-то информацию и многое другое.
Ранее мы уже делали подборку лучших инструментов для парсинга веб-страниц средствами PHP. Согласно результатам того исследования, наиболее универсальной оказалась библиотека phpQuery.
Это, по сути, PHP вариант jQuery, обладающий почти всем, что есть в оригинале. Помимо удобства использования, phpQuery еще и гораздо быстрее своих конкурентов, а значит, лучше всего подойдет для работы с большим объемом данных.
Вот небольшой пример использования phpQuery для обработки элементов списка (li):
foreach(pq('li') as $li) {
// Можно вывести различные данные обычным текстом
$tagName = $li->tagName;
$childNodes = $li->childNodes;
// А можно добавить обертку phpQuery (аналог $() в JQuery) и, например, добавить к элементу какой-то класс
pq($li)->addClass('my-second-new-class');
}
Библиотека и документация к ней доступны на официальной странице в Google Code.
mPDF
mPDF — одна из лучших библиотек для генерации документов в формате PDF. В отличие от своих конкурентов, mPDF в полной мере поддерживает русский язык, вставку картинок, форматирование и, самое главное, HTML и CSS.
Основанный на открытом движке инструмент очень прост в использовании: на вход вы подаете почти обычную веб-страницу — на выходе получаете полноценный PDF.
$html = '<table border="1">
<tr>
<td>Пример 1</td>
<td>Пример 2</td>
<td>Пример 3</td>
<td>Пример 4</td>
</tr>
<tr>
<td>Пример 5</td>
<td>Пример 6</td>
<td>Пример 7</td>
<td>
<a href="http://mpdf.bpm1.com/" title="mPDF">mPDF</a>
</td>
</tr>
</table>';
// Задаем формат, отступы и т.д
$mpdf = new mPDF('utf-8', 'A4', '8', '', 10, 10, 7, 7, 10, 10);
// Не забываем про русский
$mpdf->charset_in = 'cp1251';
// Подключаем css
$stylesheet = file_get_contents('style.css');
$mpdf->WriteHTML($stylesheet, 1);
$mpdf->list_indent_first_level = 0;
// Формируем pdf
$mpdf->WriteHTML($html, 2);
$mpdf->Output('mpdf.pdf', 'I');
?>
Более подробную документацию, пример кода и ссылку на скачивание вы найдете на официальном сайте.
- 3, 0.7 ↩