定制 impulsephp/fixtures 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

impulsephp/fixtures

Composer 安装命令:

composer require impulsephp/fixtures

包简介

Fixtures provider for ImpulsePHP with Faker integration, CLI scaffolding and story-based dataset scenarios.

README 文档

README

impulsephp/fixtures fournit un provider de fixtures pour ImpulsePHP, pensé pour rester proche des conventions réelles du dépôt : services simples dans le conteneur, exécution via db, commandes Symfony Console explicites, et scénarios métier composables avec des stories.

Ce que fait le package

  • enregistre un gestionnaire de fixtures dans le conteneur ;
  • scanne les fixtures applicatives dans src/Fixture et tests/Fixtures ;
  • scanne les stories de fixtures dans src/Fixture/Story et tests/Fixtures/Story ;
  • exécute les fixtures avec Cycle\ORM\ORMInterface via impulsephp/db ;
  • fournit un contexte d’exécution avec références, seed déterministe et accès simple à Faker ;
  • propose une commande make:fixture pour générer un squelette ;
  • propose une commande fixtures:run pour exécuter toutes les fixtures, une fixture précise ou une story nommée.

Prérequis

  • PHP 8.2 ou supérieur ;
  • une application ImpulsePHP avec impulsephp/core ;
  • impulsephp/db chargé dans les providers de l’application ;
  • un fichier impulse.php à la racine de l’application.

Installation

composer require impulsephp/fixtures

Le package déclare son provider via extra.impulse-provider. Si votre application n’utilise pas l’auto-découverte, ajoutez Impulse\Fixtures\FixturesProvider à la configuration providers de impulse.php.

Configuration minimale

<?php

use Impulse\Db\DbProvider;
use Impulse\Fixtures\FixturesProvider;

return [
    'env' => 'dev',
    'providers' => [
        DbProvider::class,
        FixturesProvider::class,
    ],
    'database' => [
        'name' => 'app',
        'driver' => 'sqlite',
        'database' => __DIR__ . '/var/storage/database.sqlite',
    ],
];

Options disponibles :

  • fixtures.paths : chemins additionnels de fixtures.
  • fixtures.story_paths : chemins additionnels de stories.
  • fixtures.locale : locale Faker par défaut. Défaut en_US.
  • fixtures.seed : seed par défaut utilisée si la commande n’en reçoit pas.

Exemple rapide

use App\Entity\User;
use Impulse\Fixtures\AbstractFixture;
use Impulse\Fixtures\FixtureContext;

final class UserFixture extends AbstractFixture
{
    public function load(FixtureContext $context): void
    {
        for ($i = 0; $i < 5; $i++) {
            $user = new User();
            $user->email = $context->faker()->unique()->safeEmail();

            $context->persist($user);
        }
    }
}

Story associée :

use App\Fixture\PostFixture;
use App\Fixture\UserFixture;
use Impulse\Fixtures\AbstractStory;

final class DemoStory extends AbstractStory
{
    public function fixtures(): array
    {
        return [
            UserFixture::class,
            PostFixture::class,
        ];
    }
}

Exécution :

php ./bin/impulse fixtures:run --story=Demo --seed=42

CLI

Le dépôt de référence n’auto-enregistre pas les commandes des packages dans bin/impulse. Comme pour les autres commandes Symfony Console d’ImpulsePHP, ajoutez explicitement celles du package dans le binaire de votre application :

use Impulse\Fixtures\Console\MakeFixtureCommand;
use Impulse\Fixtures\Console\RunFixturesCommand;

$app->addCommand(new MakeFixtureCommand());
$app->addCommand(new RunFixturesCommand());

Documentation

  • docs/installation.md
  • docs/usage.md
  • docs/cli.md

Tests

composer test

Licence

MIT

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 5
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-04-11

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固