maduser/argon-database
Composer 安装命令:
composer require maduser/argon-database
包简介
A PHP package for database interactions
README 文档
README
Argon Database
DBAL wrapper built on top of PDO for PHP 8.2+.
Features
- Not a ORM
- PDO-based abstraction
- Strict typing everywhere
- DTO hydration
- Supports MySQL, Postgres, SQLite
Installation
composer require maduser/argon-database
Creating a Client
Wrap your DB config in a LazyConnectionProvider, then pass to QueryClient.
use Maduser\Argon\Database\QueryClient; use Maduser\Argon\Database\PDO\MySQL\MySQLConfig; use Maduser\Argon\Database\PDO\LazyConnectionProvider; $provider = new LazyConnectionProvider( new MySQLConfig('127.0.0.1', 3306, 'argondb', 'argon', 'secret') ); $db = new QueryClient($provider);
Other drivers:
new PostgresConfig('127.0.0.1', 5432, 'argondb', 'argon', 'secret'); new SqliteConfig(__DIR__ . '/mydb.sqlite');
Query Usage
fetchAll()
$rows = $db ->query('SELECT * FROM users WHERE active = :active', ['active' => true]) ->fetchAll();
Returns: list<array<string, scalar|null>>
fetchOne()
$user = $db ->query('SELECT * FROM users WHERE id = :id', ['id' => 42]) ->fetchOne();
Returns: array<string, scalar|null> | null
execute()
$db->query('UPDATE users SET banned = true WHERE id = :id', ['id' => 666]) ->execute();
Returns: void
file()
$users = $db ->file(__DIR__ . '/queries/select_active_users.sql', ['limit' => 10]) ->fetchAll();
Throws if the file is unreadable or empty.
Using DTOs with RowMapper
To hydrate rows into typed objects, implement RowMapper<T> on your DTO:
use Maduser\Argon\Database\Contracts\RowMapper; /** * @implements RowMapper<User> */ final class User implements RowMapper { public function __construct( public readonly int $id, public readonly string $email ) {} public static function map(array $row): self { return new self( id: (int) $row['id'], email: (string) $row['email'] ); } }
Then hydrate:
/** @var list<User> */ $users = $db ->query('SELECT * FROM users') ->fetchAllTo(User::class); /** @var User|null */ $user = $db ->query('SELECT * FROM users WHERE id = :id', ['id' => 1]) ->fetchOneTo(User::class);
Transactions
$result = $db->transaction(function (QueryClient $trx) { $trx->query(...)->execute(); return 'done'; });
Commits on success, rolls back on exception.
License
MIT.
maduser/argon-database 适用场景与选型建议
maduser/argon-database 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 23 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 07 月 26 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 maduser/argon-database 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 maduser/argon-database 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 23
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 10
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-07-26