rotexsoft / leanorm
基于 idiorm (\LeanOrm\DBConnector) 的简化版本实现的通用数据对象 (https://github.com/rotexsoft/gdao) 实现。一个轻量级、高性能的 PHP 数据访问库。
Requires
- php: >=8.1
- aura/sqlquery: ^3.0.0
- psr/log: ^2.0.0 || ^3.0.0
- rotexsoft/gdao: ^3.0.1
- rotexsoft/sqlschema: ^3.1.1
Requires (Dev)
- atlas/pdo: ^2.0.0
- php-coveralls/php-coveralls: ^2.7
- phpunit/phpunit: ^10.5
- rector/rector: ^1.2.1
- rotexsoft/versatile-collections: ^6.0
- symfony/polyfill-php82: ^1.30
- vimeo/psalm: ^5.25.0
Suggests
- rotexsoft/leanorm-cli: A Command-line tool for rotexsoft/leanorm for generating Model, Record & Collection Classes for tables & views in a specified database.
README
LeanOrm
一个轻量级、高性能的PHP数据访问库。是Doctrine和Eloquent的良好替代品,没有大多数应用中不需要的所有功能。
安装要求
PHP 8.1+(版本4.x和5.x)。
PHP 7.4+(版本2.x和3.x)
本包的2.x和3.x版本已严格测试,与sqlite 3.7.11+、MySQL 8.0.29+和Postgresql 15.1+兼容。
4.x和5.x版本已严格测试与以下兼容:
- Sqlite 3.34.1+
- MariaDB 10.4.33+、10.5.24+、10.6.17+、10.11.7+、11.0.5+、11.1.4+、11.2.3+和11.4.2+
- MySql 5.6.51、5.7.44、8.0.36+、8.1.0、8.2.0、8.3.0+和8.4+
- PostgreSQL 12.18+、13.14+、14.11+、15.6+和16.2+
- 请参阅run-tests-against-multiple-db-versions.php
MS SQL Server理论上支持,但尚未测试。一旦完成对该数据库引擎的测试,将提供更多有关MS SQL Server支持的信息。
如果使用Sqlite,则要求sqlite版本为3.7.11或更高。
本包的1.x版本从未发布稳定版。
本包的2.x+版本稳定,并使用aura/sqlquery 2.8.0+。
本包的3.x+、4.x+和5.x+版本也是稳定的,并使用aura/sqlquery 3.0.0+。
2.x和3.x版本的主要区别在于它们返回的 aura/sqlquery 版本,3.x有一些新功能,例如 Model::fetchOneByPkey($id, array $relations_to_include = []): ?\GDAO\Model\RecordInterface。
2.x中的已弃用 Utils::search2D(...) 在3.x中已被删除。
5.x版本与4.x版本不兼容。
4.x版本与3.x版本不兼容。
截至2024年7月,2.x、3.x和4.x版本功能完整,只会对那些版本应用错误修复。
安装
composer require rotexsoft/leanorm
有一个配套的命令行工具,可用于自动为数据库中的表和视图生成Model、Record和Collection类。要安装此工具,只需运行以下命令。阅读工具的文档以获取更多信息。
composer require --dev rotexsoft/leanorm-cli
运行测试
./vendor/bin/phpunit --coverage-text
您可以通过设置环境变量 LEANORM_PDO_DSN 使用有效的 $dsn 字符串为pdo设置,例如 LEANORM_PDO_DSN=sqlite::memory
- 对于Postgres,dsn必须包含 dbname=blog,并且您应确保Postgres实例中存在一个名为blog的数据库。对于Sqlite、MariaDB或MySql,不需要此操作,数据库将通过程序创建。
如果需要,您可以通过设置环境变量 LEANORM_PDO_USERNAME 使用有效的 $username 字符串为pdo设置,例如 LEANORM_PDO_USERNAME=jblow
如果需要,您可以通过设置环境变量 LEANORM_PDO_PASSWORD 使用有效的 $password 字符串为pdo设置,例如 LEANORM_PDO_PASSWORD=some_password
例如
LEANORM_PDO_DSN=sqlite::memory: LEANORM_PDO_USERNAME=jblow LEANORM_PDO_PASSWORD=some_password ./vendor/bin/phpunit --coverage-text
LEANORM_PDO_DSN="mysql:host=hostname_or_ip_address" LEANORM_PDO_USERNAME="jblow" LEANORM_PDO_PASSWORD="some_password" ./vendor/bin/phpunit --coverage-text
GDAO 类和接口
查看代码以获取最新方法列表
LeanORM 类
查看代码以获取最新方法列表
- \LeanOrm\Model 扩展了抽象类 \GDAO\Model
- \LeanOrm\Model\Record 和 \LeanOrm\Model\ReadOnlyRecord 都实现了 \GDAO\Model\RecordInterface
- \LeanOrm\Model\Collection 实现了 \GDAO\Model\CollectionInterface
文档
本包非稳定版1.x的文档位于http://rotexsoft.github.io/leanorm/
2.x版本的文档可以在这里找到:此处。
3.x+版本的文档可以在这里找到:此处。
4.0.x+版本的文档可以在这里找到:此处。
4.1.x+版本的文档可以在这里找到:此处。
5.x+版本的文档可以在这里找到:此处。
请提交问题(最好是带有pull request的)来纠正文档中的错误或遗漏,或提出对文档的改进建议。
贡献
PHPUnit测试在phpunit.xml.dist中按特定顺序设置。
是的,最佳实践是让测试相互独立运行,但由于DBConnector类中有相当多的静态方法,其测试需要在其他测试类之前运行。
为了使新测试运行,必须手动将新测试文件添加到phpunit.xml.dist文件中。
分支
以下是本仓库中的分支
- master: 包含本包最新主要版本(5.x)的代码。
- 4.1.x: 包含本包4.1.x版本的代码。此分支只应添加错误修复。此分支功能完整。
- 4.0.x: 包含本包4.0.x版本的代码。此分支只应添加错误修复。此分支功能完整。
- 3.x: 包含本包3.x版本的代码。此分支只应添加错误修复。此分支功能完整。
- 2.2.x: 包含本包2.2.x版本的代码。此分支只应添加错误修复。此分支功能完整。
- 1.X: 包含本包1.X版本的代码。此分支已被弃用。
- gh-pages: 包含本包1.X版本的文档。此分支已被弃用。