Библиотека по генерации 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 и не мудрить с этим контроллером...


Ответы (0 шт):