conserto / pomm-foundation
Postgresql连接管理器
Requires
- php: >=8.1
- ext-pgsql: *
- psr/log: ^2.0 || ^3.0
Requires (Dev)
- atoum/atoum: ^4.0
- phpstan/phpstan: ^1.7
- dev-main
- 3.2.4
- 3.2.3
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.2
- 3.1.1
- 3.1.0
- 3.0.x-dev
- 3.0.0
- 2.0.x-dev
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 2.0.0-rc.3
- 2.0.0-rc.2
- 2.0.0-rc.1
- 2.0.0-beta.2
- 2.0-beta-1
- dev-bump_version
- dev-primary_error_msg
- dev-throws_annotations
- dev-mdou/enum-converter
- dev-fix/prepared_query_in_preparation
- dev-report_forked_fixes_and_improvements
- dev-develop
This package is auto-updated.
Last update: 2024-09-26 18:15:22 UTC
README
这是Pomm Project(http://www.pomm-project.org)的组件库的分支。
什么是Foundation?
Foundation是Pomm数据库框架的核心。它使客户端能够通过会话与数据库或彼此进行通信。其中一个客户端——查询管理器——可以使Foundation作为DBAL的替代品。如果您正在寻找一个库来在您的Web开发中使用PostgreSQL,您可能需要查看Pomm的模型管理器(https://github.com/pomm-project/ModelManager)。如果您想创建自定义数据库访问层或仅执行SQL查询,Foundation是正确的工具。
Foundation提供以下功能
- 转换器(支持所有内置Postgresql类型,包括数组、HStore等。)请参阅此SO评论。
- 预编译查询。
- 参数化查询。
- 结果的可寻址迭代器。
- 支持异步消息的LISTEN / NOTIFY。
- 服务管理器,方便与依赖注入容器集成。
需求
- PHP 8.1
- mod-pgsql(不是PDO)
- Postgresql 9.4
Pomm可能与旧版本的PHP或Postgres一起工作,但这尚未经过测试,并且可能会随时出现错误。
安装
Pomm组件可在packagist上通过composer使用。要安装和使用Pomm的Foundation,请将"conserto/pomm-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)
方法(即使是一个空的方法)。通常,提供一个 fixture 类作为会话客户端是一个好主意,该方法就是注册它的正确位置。
已知的错误
不幸的是,我们无法轻松修复这个错误,或者在不降低整个堆栈性能的情况下修复它。
- 当自定义组合类型在除
public
之外的模式中定义时,ConvertedResultIterator
无法识别。这是因为pg_type
函数没有返回类型所属的模式。除非手动发出大量查询来检查模式,否则别无他法。(见 #53)