rotexsoft/leanorm

基于 idiorm (\LeanOrm\DBConnector) 的简化版本实现的通用数据对象 (https://github.com/rotexsoft/gdao) 实现。一个轻量级、高性能的 PHP 数据访问库。

5.1.0 2024-07-22 17:17 UTC

README

运行 PHP 测试和代码质量工具   GitHub 发布 (最新 SemVer)   GitHub   覆盖率状态   GitHub 代码大小(字节)  

GitHub 主要语言   Packagist PHP 版本支持   自最新发布以来 GitHub 提交(按日期)   GitHub 最后提交   GitHub 发布日期   Libraries.io GitHub 仓库依赖状态

LeanOrm

一个轻量级、高性能的PHP数据访问库。是Doctrine和Eloquent的良好替代品,没有大多数应用中不需要的所有功能。

安装要求

PHP 8.1+(版本4.x和5.x)。

PHP 7.4+(版本2.x和3.x)

Composer

本包的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 类和接口

查看代码以获取最新方法列表

GDAO Classes & Interfaces

LeanORM 类

查看代码以获取最新方法列表

  • \LeanOrm\Model 扩展了抽象类 \GDAO\Model
  • \LeanOrm\Model\Record\LeanOrm\Model\ReadOnlyRecord 都实现了 \GDAO\Model\RecordInterface
  • \LeanOrm\Model\Collection 实现了 \GDAO\Model\CollectionInterface

LeanORM Classes

文档

本包非稳定版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版本的文档。此分支已被弃用。