Laravel 6 не может найти класс поставщика в быстро настроенном пакете, выпущенном для Laravel 5.

Я пытаюсь использовать Firebird 3.0 из Laravel 6.0, и я следую https://firebirdsql.org/file/documentation/reference_manuals/fbdevgd-en/html/fbdevgd30-php-Laravel-crt-project.html, где пакет . К сожалению, этот пакет предназначен для Laravel 5.7 (или, может быть, он не был опубликован в репозиториях композитора), поэтому я получил следующее сообщение, когда пытался установить этот пакет:

[InvalidArgumentException]
Could not find a matching version of package sim1984/laravel-firebird. Check the package spelling, your version con
straint and that the package is available in a stability which matches your minimum-stability (dev).

Итак, у меня была отличная идея для тонкой настройки этого пакета, поэтому я разделил его как https://github.com/alex153490/laravel-firebird, я изменил требования к версии в его composer.json. Я надеюсь, что для обеспечения совместимости с Laravel 6 больше не нужно будет работать. После этого я добавил этот репозиторий git в composer.json моего проекта Laravel:

 "repositories": [
        {
            "type": "package",
            "package": {
                "name": "alex153490/laravel-firebird",
                "version": "master",
                "source": {
                    "url": "https://github.com/alex153490/laravel-firebird.git",
                    "type": "git",
                    "reference": "master"
                }
            }
        }
    ]

Теперь пакет установлен нормально. Я создал один файл модели в своем проекте Laravel и добавил импорт

use Firebird\Eloquent\Model;

как предполагалось в исходном описании оригинальной упаковки.

Но теперь я начал получать ошибку

Symfony\Component\Debug\Exception\FatalThrowableError
Class 'Firebird\Eloquent\Model' not found 

при попытке вызвать этот класс модели из простого API-контроллера отдыха моего проекта.

Почему этот класс не найден, ошибка - пакет был установлен без ошибок, пакет находится внутри папки поставщика моего проекта, и, похоже, все в порядке. Я проверил возможные проблемы из контрольного списка https://dev.to/dechamp/php---how-to-fix-class--not-found-error-1gp9, в том числе я регенерировал файл автозагрузки для своего проекта, но не помощь.

Что я сделал не так? Почему так сложно сделать класс видимым из моего пакета внутри каталога vendor?

p.s. когда я пытался использовать предложенные пакеты Laravel-Firebird для Laravel 6 (https://packagist.org/packages/harrygulliford/laravel-firebird или https://github.com/KKSzymanowski/laravel-6-firebird) Я всегда получал событие исключения для самого простого оператора select:

Illuminate\Database\QueryException
SQLSTATE[HY000]: General error: -901 Dynamic SQL Error SQL error code = -901 feature is not supported (SQL: select * from "MY_TABLE") 

Мне кажется, что авторы пакета только что предоставили данные для грамматики, специфичной для Firebird (включая операторы для системных данных), но они проигнорировали, что Firebird может иметь некоторые функции, отсутствующие в Laravel.


person TomR    schedule 06.02.2020    source источник
comment
Вы уверены, что использовать обратную косую черту можно? Use Firebird\Eloquent\Model; Сравните с основной косой чертой, использованной вместо нее в примере, который вы связали use Your/Class/Here; Использование обратной косой черты вместо основной косой черты является привычкой в ​​ПУТИ ФАЙЛА на CP / M - ›MS-DOS -› MS-Windows, но это не так в исходники программы!   -  person Arioch 'The    schedule 06.02.2020
comment
Разветвленный пакет был разветвлен от github.com/jacquestvanzuydam/laravel-firebird, т.е. больше не поддерживается и рекомендует использовать github.com/KKSzymanowski/laravel-6-firebird ( что похоже на Laravel 6).   -  person Mark Rotteveel    schedule 06.02.2020
comment
Конечно, я попробовал пакет от KKSzymanowski, но он выдал то же сообщение об ошибке (я уточню завтра), что и общие пакеты Firebird-Laravel, в которых была эта ошибка о том, что не обрабатывается функция автоинкремента, которая требуется Laravel, и, следовательно, мне интересно использовались ли они или тестировались вообще. В пакете KkS нет этого кода обработки автоинкремента / последовательности, и поэтому я сомневаюсь, что это что-то большее, чем исходный проект для домашних животных. У меня нет доказательств обратного.   -  person TomR    schedule 06.02.2020
comment
Автор действительно говорит, что я не создаю свои собственные базы данных Firebird, а только читаю их из существующих, поэтому поддержка INSERT и UPDATE может быть нестабильной.. Однако я не вижу в вашем вопросе ничего, что позволяло бы предположить, что Firebird\Eloquent\Model вообще существует. Это не класс в драйвере, поэтому я предполагаю, что это должен быть класс в вашем приложении.   -  person Mark Rotteveel    schedule 06.02.2020
comment
Этот класс существует, например github.com/sim1984/laravel-firebird/tree/master/ src / Firebird / Я не могу сделать даже одиночный выбор из одной таблицы. Я предполагаю, что Laravel Eloquent при построении внутренней схемы / класса ожидает поле автоинкремента, и поэтому даже построение схемы даже для операции выбора не удается. Пакет sim1984 - самый надежный, он имеет некоторое представление о документации, а универсальный пример (даже с ассоциациями) представлен в документации Firebird (см. мои ссылки). Надеюсь, что сообщество соберется вокруг этого пакета.   -  person TomR    schedule 06.02.2020
comment
Laravel - самый популярный фреймворк PHP и один из самых популярных фреймворков (также бэкенд для приложений SPA React, Angular, Vue.js) в целом. Я знаю о русскоязычном сообществе Firebird и Yii, но всегда есть соблазн пойти с большинством, то есть с Laravel.   -  person TomR    schedule 06.02.2020
comment
Интересно, что sim1984 - российский технический писатель, делающий оригинальные (на русском языке) документацию на Firebird и делающий несколько статей о подключении к FB из разных статей. Интересно, развил ли он Laravel, чтобы исправить некоторые ошибки, мешавшие работе статей. В любом случае, я считаю, что нужно начинать с исправления строки use Firebird\Eloquent\Model; или с доказательства того, что она соответствует как формальному синтаксису PHP, так и реализации PHP.   -  person Arioch 'The    schedule 07.02.2020
comment
Конечно, в этом примере, который, вероятно, был причиной этого форка, используется в точности обратная косая черта: github.com/sim1984/phpfbexample/blob/master/app/Product.php   -  person Arioch 'The    schedule 07.02.2020
comment
Но в этом примере sim1984 Product.php есть use Firebird\Eloquent\Model; - те же косые черты, что и у меня. Кроме того, я пытался написать use Firebird/Eloquent/Model;, но это даже не правильный PHP-код!   -  person TomR    schedule 07.02.2020
comment
вы не говорили, что пробовали раньше, поэтому я повторил, и в статье dev.to, на которую вы ссылаетесь, используются косые черты, нарушают ли они синтаксис PHP? .. Тогда, если вы используете ОС Windows, возможно, вы сможете попробуйте SysInternals Process Monitor для отслеживания ввода-вывода файла процесса PHP и посмотрите, пытается ли он найти источники для этого класса, и если да, то под какими именами и в каких папках   -  person Arioch 'The    schedule 07.02.2020
comment
Здесь были его статьи об этом пакете, вы можете попробовать их прочитать с помощью таких сервисов, как www.translate.ru - 1) habrahabr.ru/post/311446 2) habr.com/ru/post/312874 3) habr.com/ru/post/317458, но я не уверен в той ошибке, которую вы видите, может быть что-то особенное   -  person Arioch 'The    schedule 07.02.2020
comment
Я только что пробовал другие косые черты по вашему предложению, поэтому в моем посте об этом не упоминалось. Спасибо за статьи, я хорошо знаю русский язык.   -  person TomR    schedule 07.02.2020
comment
Я вставил свой скрипт var_dump(get_declared_classes());, и дамп содержит множество классов, включая классы Eloquent, но он не содержит слова Firebird, поэтому возникают проблемы с автозагрузкой моего пакета. Журнал ошибок apache-php не содержит никаких подсказок. Итак, теперь я сужаю свое исследование загружаемости моего пакета laravel-firebird. В настоящее время я не знаю, как это отладить.   -  person TomR    schedule 07.02.2020
comment
Хорошо, теперь я смотрю на поставщика / композитора моего проекта Laravel, и там установлен install.json с записями firebird-laravel "version": "master", "version_normalized": "9999999-dev",, но классы Firebird не отображаются в autoload_psr4.php или autoload_real.php или в любых других файлах автозагрузки. Итак, углубляемся в глубину ...   -  person TomR    schedule 07.02.2020
comment
Я добавил п.с. раздел с исключением ошибок для стандартных пакетов Laravel-6-Firebird.   -  person TomR    schedule 07.02.2020