ПРОСТО О СЛОЖНОМ
UPD: composer в OS все таки есть по умолчанию из коробки, спасибо внимательному @undefi, который обратил на это внимание. Инструкцию оставляю, мало ли)))
Сегодня мы установим composer в Open Server, разберемся как создавать QR-коды с помощью PHP, а самое главное - как с помощью все того же пресловутого PHP их расшифровывать. Практическое применение уже представьте сами, хочу сказать лишь о том, что информации именно по декодированию на PHP на русском языке практически нет, да и на английском очень мало.
ВВЕДЕНИЕ
Изначально стояла задача сформировать QR код и расшифровать его с помощью PHP. В процессе обнаружились некоторые сложности, но по итогу все получилось как надо. Я не буду писать подробный мануал именно по кодированию, просто опишу способ подключения нужной библиотеки, дам ссылку на файл, также ссылку на библиотеку декодирования (если я все верно понял - она единственная для PHP на данный момент). Ну и приятным бонусом станет установка composer на сборку Open ServerЧто вы узнаете:
- Как установить composer на Open Server
- Генерация QR-кода на PHP с помощью библиотеки PHP QR Code
- Декодирование QR-кода на PHP с помощью библиотеки qrcode-detector-decoder
Основные понятия
Open Server — это портативный локальный WAMP/WNMP сервер, имеющий многофункциональную управляющую программу и большой выбор подключаемых компонентов под WINDOWS. Более подробно - на сайте разработчика
Composer — это пакетный менеджер уровня приложений для языка программирования PHP, который предоставляет средства по управлению зависимостями в PHP-приложении. Подробнее - здесь
PHP QR Code - библиотека для генерации QR-кода на PHP, найти ее можно на гитхабе
qrcode-detector-decoder - библиотека для декодирования QR-кода на PHP, вот ссылка на гитхаб
Устанавливаем composer на Open Server
Для этого первым делом идем в настройки Open Server и смотрим какая версия PHP у нас там стоит. Имейте ввиду: версия по-любому должна быть не менее 5.3.2
Включаем консоль Open Server, для этого нажмите "Дополнительно" и выберите "Консоль".
Командами консоли переходим в нужную нам папку, так как у меня стоит в настройках PHP_7.4, то команда будет такой:
cd/modules/php/PHP_7.4
Затем выполняем следующую команду:
php -r "readfile('https://getcomposer.org/installer');" | php
Если все нормально установилось, то вы увидите надпись типа:
All settings correct for using Composer
Downloading...
Composer succesfully installed to : <путь до вашей папки php>/Composer.phar
User it: php composer.phar
Если вы теперь наберете в консоли команду
php composer.phar -V
то должны увидеть версию composer. Для дальнейшего удобства рекомендую выполнить еще одну команду:
echo @php "%~dp0composer.phar" %*>composer.bat
Она создаст .bat файлик, и теперь можно будет работать без указания php composer.phar, просто указывая composer. В этом случае команда проверки версии (которая была выше) будет выглядеть так:
composer -V
Вот и все, вы установили composer на Open Server и теперь можете смело им пользоваться! Как и зачем - добро пожаловать в гугл, если будет время, которого не будет - я напишу подробнее о нем.
Генерация QR-кода на PHP с помощью библиотеки PHP QR Code
Сначала мы давайте создадим новый локальный сайт, для этого заходим в директорию OpenServer/Domains и создам папку, пусть она называется my_site, и вот теперь начинаем свистопляску с библиотеками.
Сначала лезем по ссылке PHP QR Code и скачиваем эту библиотеку к себе на компьютер. После этого распаковываем ее в my_site (можно в другое место, но тогда смотрите внимательно пути). После распаковки - удалите все, что было в файле index.php, хотя если вы этого не сделаете, а просто запустите сайт, то уже сможете генерировать QR через специальную форму. Но, наша цель чуток другая, поэтому мы открываем файлик index.php и там пишем следующие строки:
<?php
include "qrlib.php";
QRcode::png("Иванов Иван, пятница 13", "qr.png", "L", 4, 4);
?>
Что мы сделали? Мы подключили саму библиотеку, а также вызвали нужный нам метод, который сохранил нашу строку в рисунок PNG, тем самым СГЕНЕРИРОВАЛ QR-КОД! Остальные параметры смотрите в официальной документации библиотеки, там их много: можно и менять размер кода, и цвет, и сохранять в разных форматах, в общем - изучайте, мы идем дальше.
Декодирование QR-кода на PHP с помощью библиотеки qrcode-detector-decoder
А вот теперь нам пригодится наш composer. И так: чтобы декодировать QR-код мы открываем консоль в Open Server, и перемещаемся в директорию нашего сайта с помощью команды
cd domains\my_site
Теперь просто выполняем там же команду:
composer require khanamiryan/qrcode-detector-decoder
Все, библиотека установлена, наша задача теперь лишь добавить в index.php строку
require __DIR__ . "/vendor/autoload.php";
А теперь небольшое веселье: если сейчас выполнить действие из официального примера - мы ничего не получим, кроме ужасающей по своей длине ошибки интерпретатора PHP, которая сводится к тому, что нужно просто в наш скрипт добавить еще одну строку:
use Zxing\QrReader;
Этой строчкой мы разрешаем использование пространства имен, и после этого уже смело пишем в конце скрипта:
$qrcode = new QrReader(__DIR__ .'\qr.png');
$text = $qrcode->text();
echo $text;
Теперь, если мы запустим наш сайт, то увидим расшифровку нашего QR-кода, который хранился в файле qr.png. В целом же каркас нашего скрипта выглядит следующим образом:
<?php
include "qrlib.php";
require __DIR__ . "/vendor/autoload.php";
use Zxing\QrReader;
QRcode::png("Иванов Иван, пятница 13", "qr.png", "L", 4, 4);
$qrcode = new QrReader(__DIR__ .'\qr.png');
$text = $qrcode->text();
echo $text;
?>
Вот и все! Еще раз: в данном примере представлен просто каркас скрипта, доводить его до ума, делать поля, обрабатывать вывод - все это уже каждый делает под свои задачи. Здесь же мы просто сгенерировали QR-код и успешно его декодировали, и все это чисто средствами PHP.
Напоминаю, что вопросы можно задать в группе https://t.me/newqosgroup