impulsephp/db
Composer 安装命令:
composer require impulsephp/db
包简介
Cycle ORM provider for ImpulsePHP with annotated entity discovery, deterministic schema snapshots, and automatic dev-time migrations.
README 文档
README
impulsephp/db fournit l'integration Cycle ORM pour ImpulsePHP, avec decouverte automatique des entites, generation d'un snapshot de schema deterministe et gestion automatique des migrations en environnement de developpement.
Ce que fait le package
- enregistre
Cycle\Database\DatabaseManager,Cycle\ORM\ORMInterface,PDOetImpulse\Db\Contracts\DbInterfacedans le conteneur ; - scanne les entites de l'application uniquement dans
src/Entity; - compile un snapshot JSON deterministe de la structure ORM ;
- stocke les artefacts techniques dans
var/db; - genere ou met a jour les migrations dans
migrations/a la racine de l'application ; - applique automatiquement les migrations pendantes en
dev; - affiche des notifications developpeur de succes ou d'erreur dans l'interface.
Prerequis
- PHP 8.2 ou superieur ;
ext-pdo;impulsephp/core;- une application ImpulsePHP avec un fichier
impulse.phpa la racine.
Installation
composer require impulsephp/db
Le provider est declare via extra.impulse-provider. Si votre application n'utilise pas l'auto-decouverte, ajoutez Impulse\Db\DbProvider a votre configuration.
Configuration minimale
Le package lit la configuration de l'application dans impulse.php.
Exemple SQLite :
<?php return [ 'env' => 'dev', 'database' => [ 'name' => 'database', 'driver' => 'sqlite', 'database' => __DIR__ . '/var/storage/database.sqlite', ], ];
Clés importantes :
env: active ou non les automatismes de developpement ;database.name: obligatoire pour le workflow de creation / verification de base ;database.driver:sqlite,mysqloupostgres;database.database: chemin SQLite ou nom logique de base selon le driver.
Ce que fait le provider
Au boot, DbProvider :
- initialise le service
Db; - prepare la connexion a la base ;
- applique les migrations pendantes en
dev; - compile ou recharge le schema Cycle depuis le cache ;
- injecte les notifications dans la reponse HTML ou AJAX.
Services exposes dans le conteneur :
Impulse\Db\Contracts\DbInterfaceImpulse\Db\DbCycle\Database\DatabaseManagerCycle\ORM\ORMInterfacePDO
Si impulsephp/db est present, le provider expose aussi Impulse\Database\Contrats\DatabaseInterface pour rester compatible avec les autres packages.
Entites et snapshot
Le package scanne uniquement :
src/Entity
Les artefacts generes sont stockes dans :
var/db/entities.ast.json
var/db/entities.ast.meta.json
var/db/entities.schema.php
Le snapshot JSON contient un etat normalise et deterministe du mapping Cycle, utile pour :
- detecter les ajouts, modifications et suppressions d'entites ;
- comprendre l'etat compile du schema ;
- eviter une recompilation complete a chaque requete en
dev.
Migrations
Les migrations sont stockees dans :
migrations/
Comportement actuel en dev :
- ajout d'une nouvelle entite : creation d'un nouveau fichier de migration ;
- modification ou suppression d'une entite existante : mise a jour de la derniere migration existante ;
- application automatique des migrations pendantes pendant le cycle HTTP.
Notifications
Le package emet des notifications developpeur globales :
- succes : entites creees / modifiees / supprimees, migration generee ou mise a jour, migration appliquee ;
- erreur : configuration invalide, echec de connexion, echec d'application d'une migration.
Pour les applications majoritairement AJAX, l'overlay de succes suppose que votre runtime core/js transporte et execute aussi les scripts collectes dans les reponses AJAX.
Exemple d'usage
Recuperer l'ORM dans votre application :
use Cycle\ORM\ORMInterface; $orm = $container->get(ORMInterface::class); $userRepository = $orm->getRepository(\App\Entity\User::class);
Recuperer le gestionnaire de bases :
use Cycle\Database\DatabaseManager; $dbal = $container->get(DatabaseManager::class); $database = $dbal->database('default');
Documentation complementaire
Des guides plus detailles sont disponibles dans docs/ :
docs/README.mddocs/installation.mddocs/configuration.mddocs/usage.mddocs/dev_workflow.md
Tests
composer test
Licence
MIT
impulsephp/db 适用场景与选型建议
impulsephp/db 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 0 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 04 月 08 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 impulsephp/db 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 impulsephp/db 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 39
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-04-08