impulsephp/story
Composer 安装命令:
composer require impulsephp/story
包简介
Interactive visual component explorer for ImpulsePHP
README 文档
README
impulsephp/story est l’explorateur visuel de composants d’ImpulsePHP. Le package permet de parcourir, prévisualiser et documenter les composants d’une application ou d’un package à partir de classes de story dédiées.
Ce que fait le package
- scanne automatiquement les stories présentes dans l’application ;
- expose une interface visuelle de prévisualisation ;
- regroupe les stories par catégories ;
- prend en charge plusieurs variantes par composant ;
- charge les feuilles de style associées à l’explorateur.
Prérequis
- PHP 8.2 ou supérieur ;
- une application ImpulsePHP avec
impulsephp/core; - Node.js si vous souhaitez reconstruire les assets CSS du package.
Installation
composer require impulsephp/story
Le provider est déclaré via extra.impulse-provider. Si l’auto-découverte n’est pas utilisée, ajoutez Impulse\Story\StoryProvider à votre configuration de providers.
Ce que fait le provider
Le provider :
- enregistre
Impulse\Story\Loader\StoryScannerdans le conteneur ; - expose les routes de page du package ;
- déclare les espaces de noms de composants de story ;
- charge les chemins CSS définis dans la configuration
css.
L’explorateur principal est exposé par défaut sur :
/impulse/story
Où placer vos stories
Le scanner ajoute automatiquement ces chemins :
src/Storytests/Stories
Chaque fichier PHP rencontré dans ces répertoires est analysé. Si la classe implémente Impulse\Story\Contracts\StoryInterface, elle est chargée et ajoutée à l’explorateur.
Exemple d’usage complet
Le package fournit une classe abstraite Impulse\Story\Component\AbstractStory qui simplifie la création d’une story.
use Impulse\Story\Component\AbstractStory; use App\Component\ButtonComponent; final class ButtonStory extends AbstractStory { protected string $category = 'Actions'; public function name(): string { return 'Button'; } public function description(): string { return 'Variantes du bouton principal de l’application.'; } public function componentClass(): string { return ButtonComponent::class; } protected function getBaseArgs(): array { return [ 'label' => 'Créer', 'color' => 'indigo', ]; } public function variants(): array { return [ 'primaire' => ['label' => 'Créer'], 'danger' => ['label' => 'Supprimer', 'color' => 'red'], ]; } }
Une fois le provider chargé :
- placez vos stories dans
src/Storyoutests/Stories; - démarrez votre application ;
- ouvrez
/impulse/storydans le navigateur.
Exploiter le scanner depuis le code
use Impulse\Story\Loader\StoryScanner; $scanner = $container->get(StoryScanner::class); $menu = $scanner->getMenuStructure(); $stories = $scanner->getStoriesByCategory(); $story = $scanner->getStoryByName('Button');
Assets CSS
Le package contient des assets CSS et un script npm pour surveiller la compilation :
npm install npm run watch:css
La commande compile assets/css/main.css vers public/css/main.css.
Aller plus loin
impulsephp/story est particulièrement utile avec :
impulsephp/ui, qui fournit déjà des stories prêtes à l’emploi ;- vos composants applicatifs pour documenter variantes et états de rendu.
Tests
composer test
Licence
MIT
impulsephp/story 适用场景与选型建议
impulsephp/story 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 04 月 05 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 impulsephp/story 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 impulsephp/story 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 1
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 28
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-04-05