maatify/data-adapters
最新稳定版本:v2.0.1
Composer 安装命令:
composer require maatify/data-adapters
包简介
DI-first infrastructure adapters providing explicit ownership wrappers around real database and cache drivers.
关键字:
README 文档
README
Maatify Data Adapters
Clean, DI-first infrastructure adapters for real drivers.
maatify/data-adapters provides explicit adapter implementations
around real infrastructure drivers such as PDO, Redis, and MongoDB.
It exists to act as a dependency-injection boundary — nothing more.
What This Package IS
- A DI boundary around infrastructure drivers
- An ownership wrapper for real driver instances
- Explicit by design (no magic, no auto-detection)
- Deterministic and statically analyzable
- 100% testable without real databases
➡️ See full scope definition:
docs/01-scope.md
What This Package IS NOT
This package is NOT:
- ❌ A unified database API
- ❌ An abstraction layer
- ❌ An ORM or query builder
- ❌ A repository layer
- ❌ A connection manager
- ❌ A configuration loader
- ❌ A lifecycle or retry system
If you expect convenience or API unification, do not use this package.
Supported Drivers
MySQL
- PDO
- Doctrine DBAL (
Connection)
Redis
ext-redisPredis\Client
MongoDB
MongoDB\Database
Driver choice is explicit and decided by the application or DI container.
Core Mental Model
Application
↓
Configuration / Secrets / Env (outside this package)
↓
Real Driver (PDO / Redis / Mongo)
↓
Adapter (DI boundary only)
↓
Application / Higher Layers
- No env access
- No runtime detection
- No hidden behavior
Adapter Contract
All adapters implement a minimal contract:
interface AdapterInterface { public function getDriver(): object; }
- Runtime return type is
object - Static typing is preserved via docblock generics
- No unified API is introduced
➡️ Static analysis details:
docs/03-static-analysis.md
Available Adapters
MySQLPDOAdapterMySQLDBALAdapterRedisAdapter(ext-redis)RedisPredisAdapterMongoDatabaseAdapter
Each adapter:
- Accepts a ready driver instance
- Stores it
- Returns it via
getDriver()
Nothing else.
Factories (Optional Convenience)
Factories exist only to reduce boilerplate.
- No env reading
- No auto-detection
- No hidden defaults
- Typed error boundary via
AdapterCreationException
Factories are optional and not required for normal usage.
➡️ See:
docs/06-factories.md
Usage Philosophy
This package enforces:
- Explicit DI
- Explicit configuration
- Explicit error handling
- Explicit responsibility boundaries
It intentionally avoids:
- Full examples
- Framework-specific helpers
- Runtime convenience
Common Misuse Warnings
- ❌ Serializing adapters or drivers
- ❌ Expecting unified behavior
- ❌ Treating adapters as services
➡️ Detailed warnings:
docs/04-misuse-traps.md
When to Use This Package
Use it if you want:
- Predictable infrastructure boundaries
- Explicit DI
- Full control over drivers
When NOT to Use This Package
Do NOT use it if you want:
- Automatic configuration
- API unification
- Runtime magic
Documentation Index
- Scope & Boundaries
- Design Decisions
- Static Analysis
- Misuse Traps
- Lifecycle
- Factories
- Dependency Policy & Matrix
Examples
The following examples demonstrate explicit, real-world usage
of maatify/data-adapters with supported drivers.
These examples are intentionally minimal:
- No frameworks
- No helpers
- No bootstrap logic
- Explicit driver creation and adapter usage
MySQL
Redis
MongoDB
🪪 License
MIT License © Maatify.dev — Free to use, modify, and distribute with attribution.
👤 Author
Engineered by Mohamed Abdulalim (@megyptm) Backend Lead & Technical Architect — https://www.maatify.dev
🤝 Contributors
Special thanks to the Maatify.dev engineering team and all open-source contributors.
Contributions are welcome. Please read the Contributing Guide before opening a PR.
Built with ❤️ by Maatify.dev — Infrastructure-first PHP libraries
统计信息
- 总下载量: 544
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 1
- 依赖项目数: 2
- 推荐数: 1
其他信息
- 授权协议: MIT
- 更新时间: 2025-11-12