kafoso / doctrine-firebird-driver
Requires
- php: >=7.2
- doctrine/dbal: ^2.9.3
- doctrine/orm: 2.7.*
Requires (Dev)
- phpunit/phpunit: ^5.7
README
Doctrine DBAL 的 Firebird 驱动程序。
此库完全独立(即抽象化)于 Doctrine DBAL 核心库。也就是说,它是一个完全的 插件。
需求
要在您的应用程序代码中利用此库,以下要求是必需的
- Firebird 版本 2.5.*
- 版本 3.* 不受支持。您非常欢迎为此提供拉取请求。
- PHP >= 7.1
- PHP 扩展1
- doctrine/dbal: >=2.5 <=2.5.13
1 仅在远程/访客操作系统上需要,例如远程 Ubuntu 服务器或通过 Docker、Vagrant 或 XAMPP 安装的虚拟机。
许可证 & 声明
请参阅 LICENSE 文件。基本上:使用此库自行承担风险。
Schema Manager 的限制
此库 不 完全支持通过 Schema Manager 生成,即
- 从实体生成数据库表、视图等。
- 从数据库表、视图等生成实体。
不投资时间在模式生成的原因包括 Firebird 不允许重命名表,这反过来使得自动化的模式更新变得令人烦恼且过于复杂。可能通过编写手动迁移获得更好的结果。
安装
通过 Composer (kafoso/doctrine-firebird-driver
)
composer install kafoso/doctrine-firebird-driver
通过 Github
git clone git@github.com:kafoso/doctrine-firebird-driver.git
配置
手动配置
例如,在 PHP 中的配置示例,请参阅 tests/tests/Test/Integration/AbstractIntegrationTest.php
(在 setUp
方法中)。
更多帮助请参阅: https://www.doctrine-project.org/projects/doctrine-orm/en/2.5/reference/advanced-configuration.html
Symfony 配置(YAML)
此驱动程序可以像其他任何 Doctrine DBAL 驱动程序一样用于 Symfony。然而,必须指定 driver_class
选项而不是简单地指定 driver
。这是由于驱动程序不是 核心 Doctrine DBAL 库 的组成部分。
示例 YAML 配置
doctrine:
dbal:
default_connection: default
connections:
default:
driver_class: Kafoso\DoctrineFirebirdDriver\Driver\FirebirdInterbase\Driver
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: "UTF-8"
测试
开发测试要求
要运行测试、修复错误、提供功能等,以下要求是必需的
- 能够运行虚拟机的系统,例如 ubuntu/xenial64。
- Virtualbox >= 5.1.0
- Vagrant >= 2.0.0
当然,您也可以使用自己的 VM 设置手动安装所有内容。有关帮助和堆栈列表(必需的 apt-get 软件包),请参阅 Vagrantfile。
测试运行安装
运行所有测试需要几个步骤。单元测试(tests/tests/Test/Unit)将在所有环境中运行。然而,集成测试(tests/tests/Test/Integration)需要以下条件,因为它们测试的是VM中运行中的Firebird数据库。
vagrant up
安装/配置VM。vagrant ssh
sudo su
apt-get -y install firebird2.5-superclassic
您将需要输入密码来安装数据库。请提供此密码:88fb9f307125cc397f70e59c749715e1
。稍后通过DBAL连接时将重用此密码。dpkg-reconfigure firebird2.5-superclassic
启动Firebird数据库服务器。提供与上述相同的密码。
参考:https://firebirdsql.org/manual/ubusetup.html
运行测试
由于数据库是由PHP引导脚本动态创建的,因此需要在VM上以root
用户身份运行测试。
vagrant ssh
sudo su
apt-get install zip -y
(用于安装composer包)- 安装composer(在客户操作系统上)。遵循以下说明:https://getcomposer.org.cn/download/
mv composer.phar /usr/bin/composer
cd /var/git/kafoso/doctrine-firebird-driver
composer install
1cd /var/git/kafoso/doctrine-firebird-driver/tests
php ../bin/phpunit tests
1 Composer会告诉您不应该以root/super用户身份运行它。这在技术上是真的,但在VM中没问题。
致谢
作者
- Kasper Søfren
https://github.com/kafoso
电子邮件:soefritz@gmail.com - Uffe Pedersen
https://github.com/upmedia
感谢
https://github.com/doctrine/dbal
基础Doctrine DBAL实现。此库中的驱动程序和平台逻辑基于核心库中的其他实现,主要基于\Doctrine\DBAL\Driver\PDOOracle\Driver
和\Doctrine\DBAL\Platforms\OraclePlatform
及其相应的父类。
https://github.com/helicon-os/doctrine-dbal
虽然此库的灵感来源于此 - 我们非常感谢作者们的工作 - 但此库在Interbase Firebird驱动程序逻辑方面有一些缺陷和限制。
- 它包含错误。例如,对嵌套事务和保存点的处理不正确/不足。
- 它在测试覆盖率方面存在不足。
- 它似乎不再维护。可能已经完全停止。
- 它与核心Doctrine DBAL代码混合在一起,使得版本管理和代码适应变得不必要地复杂;实际上是一场噩梦。它是从https://github.com/doctrine/dbal分叉的,尽管没有明确说明。
- 它不是一个Composer包(不在https://packagist.org.cn上)。
https://github.com/ISTDK/doctrine-dbal
是https://github.com/helicon-os/doctrine-dbal的分支,包含一些改进和修复。
https://firebirdsql.org/
Firebird文档、语法、下载等的主要资源。