oihana / php-models
The Oihana PHP Models library
Requires
- php: >=8.4
- matthiasmullie/scrapbook: ^1.5
- oihana/php-core: dev-main
- oihana/php-enums: dev-main
- oihana/php-exceptions: dev-main
- oihana/php-files: dev-main
- oihana/php-logging: dev-main
- oihana/php-reflect: dev-main
- oihana/php-schema: dev-main
- oihana/php-signals: dev-main
- oihana/php-traits: dev-main
- php-di/php-di: ^7.0
- psr/container: ^2.0
- psr/log: ^3.0
- psr/simple-cache: ^3.0
Requires (Dev)
- nunomaduro/collision: ^8.8
- phpdocumentor/shim: ^3.8
- phpunit/phpunit: ^12
This package is auto-updated.
Last update: 2026-06-20 09:31:33 UTC
README
A document model layer for PHP 8.4+: schema-aware models with composable CRUD, PDO and PSR-16 cache integration.
📚 Documentation
User guides (FR + EN), with narrative explanations and examples:
| 🇬🇧 English documentation | 🇫🇷 Documentation française |
|---|---|
| Getting started, models, CRUD traits, PDO, cache, signals. | Démarrage, modèles, traits CRUD, PDO, cache, signaux. |
Auto-generated API reference (phpDocumentor):
👉 https://bcommebois.github.io/oihana-php-models
🚀 Features
- 📄 Document models with composable CRUD traits (list, get, count, insert, update, delete).
- 🗄️ PDO-backed models for relational sources.
- 🧬 Schema.org-aware models built on
org\schema\Thing. - ⚡ PSR-16 cache integration (Scrapbook) for collection caching.
- 📡 Signals & notices for model lifecycle events.
- 🧪 Full unit-test coverage ensuring reliability and maintainability.
💡 Designed to be lightweight, testable, and compatible with any PHP 8.4+ project.
📦 Installation
Requires PHP 8.4+
Install via Composer:
composer require oihana/php-models
✅ Tests & coverage
Run the full unit-test suite (PHPUnit, strict mode):
composer test
Run a single test case:
./vendor/bin/phpunit --filter DocumentsTraitTest
Measure coverage (requires Xdebug or PCOV):
composer coverage # text + Clover + HTML under build/coverage/ composer coverage:md # readable Markdown summary (build/coverage/COVERAGE.md)
The suite runs in strict mode and targets 100% line coverage.
🧾 License
This project is licensed under the Mozilla Public License 2.0 (MPL-2.0).
👤 About the author
- Author : Marc ALCARAZ (aka eKameleon)
- Mail : marc@ooop.fr
- Website : http://www.ooop.fr
🛠️ Generate the Documentation
We use phpDocumentor to generate the documentation into the ./docs folder.
Usage
Run the command :
composer doc
🔗 Related packages
- oihana/php-core – core helpers and utilities used by this library.
- oihana/php-traits – reusable, composable object traits.
- oihana/php-logging – PSR-3 logging building blocks.
- oihana/php-schema – Schema.org value objects and resolvers.
- oihana/php-signals – lightweight signal/slot events.
