Библиотека по генерации QR кода для пхп не подключается
PHPQRcode Достаточно проста в применении, если использовать "процедурально". Но я хотел использовать её вместе с Laravel. Используя код напрямую в view - я её подключаю просто:
include(base_path() . '/app/Http/phpqrcode/qrlib.php');
И далее нужный мне код для отображения QR-кода.
Но когда я хочу воспользоваться библиотекой в классе (то есть вынести весь код из view.blade в отдельный контроллер), то получаю ошибку:
Class 'App\Http\Controllers\QRcode' not found
эта строка в коде выдаёт ошибку:
QRcode::png($codeContents, $tempDir . $user_id . '.png', QR_ECLEVEL_L, 4);
Controller:
<?php namespace App\Http\Controllers;
use App\UsersData;
class GenerateQRCodeController extends Controller
{
public function generate()
{
include(base_path() . '\app\Http\Controllers\phpqrcode\qrlib.php'); // По идее тут как-то буксует
$user_id = \Auth::id();
...
QRcode::png($codeContents, $tempDir . $user_id . '.png', QR_ECLEVEL_L, 4);
Всё содержимое qrlib.php:
<?php
$QR_BASEDIR = dirname(__FILE__).DIRECTORY_SEPARATOR;
// Required libs
include $QR_BASEDIR . "qrconst.php";
include $QR_BASEDIR . "qrconfig.php";
include $QR_BASEDIR . "qrtools.php";
include $QR_BASEDIR . "qrspec.php";
include $QR_BASEDIR . "qrimage.php";
include $QR_BASEDIR . "qrinput.php";
include $QR_BASEDIR . "qrbitstream.php";
include $QR_BASEDIR . "qrsplit.php";
include $QR_BASEDIR . "qrrscode.php";
include $QR_BASEDIR . "qrmask.php";
include $QR_BASEDIR . "qrencode.php";
Искал и пробовал разные варианты: artisan cache clear, config clear, include, namespace, composer require, composer classmap
как оказалось, такая же ситуация обстоит и с другой библиотекой:
include(base_path() . '/vendor/intervention/image/src/Intervention/Image/Image.php');
так же в этом классе GenerateQRCodeController
UPDATE 31.03
вопрос с php QRcode библиотекой решён! Оказывается в контроллере надо использовать use PHPQRCode. Это namespace, который находится в папке vendor/автор библиотеки/phpqrcode/lib/PHPQRCode/QRcode.php.
И в строке добавить \PHPQRCode
\PHPQRCode\QRcode::png($codeContents, $tempDir . $user_id . '.png', QR_ECLEVEL_L, 4);
так же, без
include(base_path() . '\app\Http\Controllers\phpqrcode\qrlib.php');
не будет работать.
Не очень интуитивно понятно, почему так происходит. Ну да ладно. А вот со второй библиотекой Image по такому же принципу пока не получилось.
2 UPDATE 31.03
С Image тоже получилось:
по аналогии use Intervention\Image не сработало, а нужно было use Intervention\Image\Facades\Image;
и всё...
а тут, кстати, include можно убрать из контроллера.
ничего не понимаю, почему так разительно всё отличается... проще конечно было оставить пхп код в view.blade и не мудрить с этим контроллером...