Я пытаюсь использовать 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.
Use Firebird\Eloquent\Model;
Сравните с основной косой чертой, использованной вместо нее в примере, который вы связалиuse Your/Class/Here;
Использование обратной косой черты вместо основной косой черты является привычкой в ПУТИ ФАЙЛА на CP / M - ›MS-DOS -› MS-Windows, но это не так в исходники программы! - person Arioch 'The   schedule 06.02.2020Firebird\Eloquent\Model
вообще существует. Это не класс в драйвере, поэтому я предполагаю, что это должен быть класс в вашем приложении. - person Mark Rotteveel   schedule 06.02.2020use Firebird\Eloquent\Model;
или с доказательства того, что она соответствует как формальному синтаксису PHP, так и реализации PHP. - person Arioch 'The   schedule 07.02.2020use Firebird\Eloquent\Model;
- те же косые черты, что и у меня. Кроме того, я пытался написатьuse Firebird/Eloquent/Model;
, но это даже не правильный PHP-код! - person TomR   schedule 07.02.2020var_dump(get_declared_classes());
, и дамп содержит множество классов, включая классы Eloquent, но он не содержит словаFirebird
, поэтому возникают проблемы с автозагрузкой моего пакета. Журнал ошибок apache-php не содержит никаких подсказок. Итак, теперь я сужаю свое исследование загружаемости моего пакета laravel-firebird. В настоящее время я не знаю, как это отладить. - person TomR   schedule 07.02.2020"version": "master", "version_normalized": "9999999-dev",
, но классы Firebird не отображаются в autoload_psr4.php или autoload_real.php или в любых других файлах автозагрузки. Итак, углубляемся в глубину ... - person TomR   schedule 07.02.2020