pomm-project / foundation
Pomm连接管理器用于Postgresql
Requires
- php: >=5.4.4
- ext-pgsql: *
- psr/log: ~1.0
Requires (Dev)
- atoum/atoum: ^2.8 || ^4.0
This package is auto-updated.
Last update: 2024-09-16 01:02:04 UTC
README
这是Pomm项目的基础组件的实验分支。它与PHP版本>=8.0兼容。
什么是Foundation?
Foundation是Pomm数据库框架的主要模块。它使客户端能够通过会话与数据库或彼此进行通信。这些客户端之一——查询管理器——可以使Foundation用作DBAL替代品。如果您正在寻找一个用于在Web开发中使用的PostgreSQL库,您可能想看看Pomm的模型管理器。如果您想创建自定义数据库访问层或仅执行SQL查询,Foundation是正确的工具。
Foundation提供以下功能
- 转换器(支持所有内置Postgresql类型 + 数组,HStore等。)见此SO评论。
- 预编译查询。
- 参数化查询。
- 在结果上可查找的迭代器。
- 支持异步消息的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的foundation,请将"pomm-project/foundation"
添加到您的composer.json
文件中的require行。
注意:PHP配置文件定义正确的时区设置很重要。Pomm还将PostgreSQL连接设置为该时区,以防止应用程序和数据库之间的时间差异。
文档
Foundation的文档可在线上或直接在项目的documentation
文件夹中找到。
测试
此包使用Atoum作为单元测试框架。测试位于sources/tests
。测试套件需要访问数据库以确保读写操作以一致的方式进行。您需要设置一个数据库并填写sources/tests/config.php
文件中的相应DSN。为了方便,Foundation提供了两个扩展了Atoum
的类,带有Session
PommProject\Foundation\Tester\VanillaSessionAtoum
PommProject\Foundation\Tester\FoundationSessionAtoum
使您的测试类扩展其中一个将授予它们一个buildSession
方法,该方法返回一个新创建的会话。这些类的客户端必须实现一个initializeSession(Session $session)
方法(即使是一个空的)。通常,提供固定类作为会话客户端是一个好主意,此方法是注册它的正确地方。
已知的bug
不幸的是,有一个bug我们无法轻松修复,或者在不降低整个堆栈性能的情况下修复。
- 当自定义复合类型在非
public
模式的schema中定义时,ConvertedResultIterator
无法识别。这是因为pg_type
函数没有返回类型所属的模式。除非手动发出大量查询检查模式,否则没有其他解决办法。(见#53)