umanit-pomm / foundation
Postgresql 连接管理器
Requires
- php: >=5.5.9
- ext-pgsql: *
- psr/log: ~1.0
Requires (Dev)
- atoum/atoum: ^2.8 || ^4.0
- squizlabs/php_codesniffer: ~2.8
This package is auto-updated.
Last update: 2024-09-13 15:10:21 UTC
README
这是Pomm Project 基础组件的实验分支。
什么是基础组件?
基础组件是 Pomm 数据库框架的核心部分。它使得客户端能够通过会话与数据库或相互之间进行通信。这些客户端之一——查询管理器——可以将基础组件用作 DBAL 的替代品。如果您正在寻找一个用于在 Web 开发中使用 PostgreSQL 的库,您可能需要查看Pomm 的模型管理器。如果您想创建自定义数据库访问层或仅执行 SQL 查询,基础组件是正确的工具。
基础组件提供以下功能
- 转换器(支持所有内置 PostgreSQL 类型 + 数组、HStore 等)。请参阅此 Stack Overflow 评论。
- 预编译查询。
- 参数化查询。
- 结果的可搜索迭代器。
- 支持 LISTEN / NOTIFY 异步消息。
- 服务管理器,便于与依赖注入容器集成。
要求
此分支针对以下配置进行了测试
- PHP 5.6, 7.0, 7.1, 7.2, 7.3,仅使用 mod-pgsql(不使用 PDO)
- Postgresql 9.4
Pomm 可能与旧版本的 PHP 或 Postgres 一起工作,但这未经测试,可能在任何时候出现损坏。
安装
Pomm 组件可在 packagist 上通过 composer 获取。要安装和使用 Pomm 的基础组件,请在您的 composer.json
文件中添加一行 "pomm-project/foundation"
。
注意:PHP 配置文件定义正确的时区设置非常重要。Pomm 还将 PostgreSQL 连接设置为该时区,以防止应用程序和数据库之间出现时间差异。
文档
基础组件的文档可在在线或直接在项目的 documentation
文件夹中找到。
测试
此包使用 Atoum 作为单元测试框架。测试位于 sources/tests
中。测试套件需要访问数据库以确保读写操作的一致性。您需要设置数据库并填写 sources/tests/config.php
文件中的相应 DSN。为了方便,基础组件提供了两个扩展 Atoum
的类,添加了 Session
PommProject\Foundation\Tester\VanillaSessionAtoum
PommProject\Foundation\Tester\FoundationSessionAtoum
使您的测试类扩展其中一个类将授予它们 buildSession
方法,该方法返回一个新创建的会话。这些类的客户端必须实现一个 initializeSession(Session $session)
方法(即使是空的)。通常,提供 fixture 类作为会话客户端是一个好主意,该方法是注册它的正确位置。
已知的错误
遗憾的是,有一个我们无法轻松修复或不会降低整个堆栈性能的错误
- 当自定义复合类型定义在除了
public
以外的模式中时,ConvertedResultIterator
无法识别。这是因为pg_type
函数不会返回该类型所属的模式。除非通过发出大量查询手动检查模式,否则别无他法。(参见 #53)