initorm/dbal
Composer 安装命令:
composer require initorm/dbal
包简介
Lightweight PDO-based database abstraction layer with a fluent result mapper.
README 文档
README
A small, dependency-free database abstraction layer for PHP. initorm/dbal
gives you a thin, lazily-connecting PDO wrapper and a fluent result mapper —
nothing more.
It is part of the InitORM stack, but it has no runtime dependencies and can be used on its own anywhere PDO can.
Highlights
- Lazy connections. No socket is opened until the first query.
- Driver-aware DSN building. MySQL/MariaDB, PostgreSQL, SQLite.
- Fluent result mapper.
asAssoc(),asObject(),asClass(),asLazy(),asArray()/asBoth(). - Type-aware binding.
bool→PARAM_BOOL,int→PARAM_INT,null→PARAM_NULL, everything else →PARAM_STR. - In-memory query log for debugging hotspots.
- PSR-3 friendly logging. Pass any
LoggerInterface, a callable, a file path, or anything with acritical()method. - Transparent PDO forwarding. Unknown method calls are forwarded to the
underlying
PDO/PDOStatement, solastInsertId(),beginTransaction(),closeCursor(), etc. all work directly on the wrapper.
Installation
composer require initorm/dbal
Requirements: PHP 8.0+ and the pdo extension, plus the driver
extension for the database you target (pdo_mysql, pdo_pgsql,
pdo_sqlite).
60-second quick start
use InitORM\DBAL\Connection\Connection; $db = new Connection([ 'driver' => 'mysql', 'host' => '127.0.0.1', 'port' => 3306, 'database' => 'shop', 'username' => 'app', 'password' => 'secret', 'charset' => 'utf8mb4', ]); // Read $user = $db->query('SELECT id, name FROM users WHERE id = :id', ['id' => 42]) ->asAssoc() ->row(); // Write $db->query( 'INSERT INTO users (name, email) VALUES (:name, :email)', ['name' => 'Alice', 'email' => 'alice@example.com'] ); $newId = (int) $db->lastInsertId(); // forwarded to PDO
Documentation
Full docs live in docs/:
- 01 · Getting Started
- 02 · Connection
- 03 · Querying
- 04 · DataMapper
- 05 · Transactions
- 06 · Logging
- 07 · Factories & DI
- 08 · Exceptions
- 09 · Recipes
Testing
composer install
composer test
The suite runs against SQLite in-memory and finishes in well under a second.
Upgrading from 1.x
See UPGRADE.md. The notable breaking changes are: PHP ≥ 8.0,
src/ layout, PDO::ATTR_PERSISTENT defaults to false, rows() returns
[] instead of null when empty, and bind() returns PARAM_BOOL for
booleans.
Contributing
Issues and pull requests are welcome. Please:
- Open an issue first if you intend to make a non-trivial change.
- Make sure
composer testis green. - Cover new behaviour with a test under
tests/.
See the organisation-wide contribution guide for the full process.
License
MIT © Muhammet ŞAFAK
initorm/dbal 适用场景与选型建议
initorm/dbal 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 128 次下载、GitHub Stars 达 0, 最近一次更新时间为 2023 年 12 月 09 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「database」 「dbal」 「mysql」 「sqlite」 「pdo」 「pgsql」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 initorm/dbal 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 initorm/dbal 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 initorm/dbal 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Dibi is Database Abstraction Library for PHP
Store your language lines in the database, yaml or other sources
A package for automatically encrypting and decrypting Eloquent attributes in Laravel 5.5+, based on configuration settings.
A custom Doctine DBAL type to use PHP DateTime objects set to the system's default timezone.
A PSR-7 compatible library for making CRUD API endpoints
Use a REST API as if it was your local database
统计信息
- 总下载量: 128
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 18
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-12-09