classFixtureProvider
class FixtureProvider
extends SqlSchemaProvider
@visibility public.Faker provider that generates fixtures from CREATE TABLE SQL statements.
The dialect and, optionally, the version tag select the release the statements are read for; omitting the version tag uses the default of the dialect.
$provider = new \SqlFixture\Provider\FixtureProvider(\Faker\Factory::create(), dialect: 'mysql', version: 'mysql-8.0.44');
$provider->getVersion() // => 'mysql-8.0.44'$provider = new \SqlFixture\Provider\FixtureProvider(\Faker\Factory::create());
$provider->fixture('CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30))', ['name' => 'Alice']) // => ['name' => 'Alice']$provider = new \SqlFixture\Provider\FixtureProvider(\Faker\Factory::create());
$provider->registerSchema('CREATE TABLE users (id INT PRIMARY KEY)');
$provider->registerSchema('CREATE TABLE posts (user_id INT)');
$rows = $provider->fixtures('users.id < posts.user_id', ['users' => ['id' => 9], 'posts' => 2]);
$rows->rows('posts') // => [['user_id' => 9], ['user_id' => 9]]Methods§
public function __construct(
Generator $faker,
?TypeMapperInterface $typeMapper = null,
?HydratorInterface $hydrator = null,
?SchemaParserInterface $schemaParser = null,
string $dialect = PlatformFactory::DRIVER_MYSQL,
string|null $version = null,
)Parameters
$faker | Generator | |
$typeMapper | ?TypeMapperInterface | |
$hydrator | ?HydratorInterface | |
$schemaParser | ?SchemaParserInterface | |
$dialect | string | SQL dialect: 'mysql', 'pgsql' or 'sqlite' |
$version | string|null | Version tag such as 'mysql-8.4.7', or null for the default of the dialect |
Throws
UnsupportedDriverException If the dialect is not supportedUnsupportedVersionException If the version tag is not a supported release of the dialectCalls 7
- class-const PlatformFactory::DRIVER_MYSQL() line 63
- static-call SqlSchemaProvider::__construct() line 66
- static-call PlatformFactory::resolveVersion() line 69
- new StaticSchemaResolver line 70
- static-call PlatformFactory::createTypeMapper() line 72
- static-call PlatformFactory::createSchemaParser() line 73
- new FixtureGenerator line 75
public function fixture<T of object>(
string $createTableSql,
array<string, mixed> $overrides = [],
class-string<T>|null $className = null,
string|null $dialect = null,
string|null $version = null,
): ($className is null ? array<string, mixed> : T)Generate a fixture from a CREATE TABLE SQL statement.
Parameters
$createTableSql | string | CREATE TABLE SQL statement |
$overrides | array<string, mixed> | Override values |
$className | class-string<T>|null | Deserialization target class |
$dialect | string|null | SQL dialect for this specific call (overrides constructor default) |
$version | string|null | Version tag for this specific call (overrides constructor default; the default of the dialect when only the dialect is overridden) |
Returns
($className is null ? array<string, mixed> : T)Test cases 52
FixtureGenerationBench::benchWarmRowcallsInsertSelectTarget::__invokecallsPostgreSqlEndToEndTest::fixtureReproducibleWithSeedcallsPostgreSqlEndToEndTest::fixtureWithArrayTypescallsPostgreSqlEndToEndTest::fixtureWithCommonTypescallsPostgreSqlEndToEndTest::fixtureWithGeneratedColumncallsPostgreSqlEndToEndTest::fixtureWithNumericPrecisioncallsPostgreSqlEndToEndTest::fixtureWithOverridescallsPostgreSqlEndToEndTest::fixtureWithPgSpecificTypescallsPostgreSqlEndToEndTest::fixtureWithSerialTypescallsPostgreSqlEndToEndTest::fixtureWithTimestampVariantscallsSqliteIntegrationTest::fixtureProviderDialectOverridecallsSqliteIntegrationTest::fixtureProviderWithSqliteDialectcallsFixtureProviderTest::testCacheDistinguishesDifferentSqlSameDialectcallsFixtureProviderTest::testCachedSchemaDistinguishesDialectscallsFixtureProviderTest::testCacheKeyIncludesDialectcallsFixtureProviderTest::testCacheSeparatesDefaultAndOverrideDialectcallsFixtureProviderTest::testCustomSchemaParserIsPreservedcallsFixtureProviderTest::testCustomTypeMapperIsPreservedcallsFixtureProviderTest::testDefaultDialectIsUsedWhenNullDialectPassedcallsFixtureProviderTest::testDialectOverrideUsesOverrideNotDefaultcallsFixtureProviderTest::testFixtureCachesSchemacallsFixtureProviderTest::testFixtureCanOverrideAutoIncrementcallsFixtureProviderTest::testFixtureHydratesClasscallsFixtureProviderTest::testFixtureReadsOneStatementForAnotherReleasecallsFixtureProviderTest::testFixtureResultIsReproducibleWithSeedcallsFixtureProviderTest::testFixtureReturnsArraycallsFixtureProviderTest::testFixtureSameDialectUsesInternalParsercallsFixtureProviderTest::testFixtureSkipsAutoIncrementcallsFixtureProviderTest::testFixtureWithAllNumericTypescallsFixtureProviderTest::testFixtureWithBinaryColumnscallsFixtureProviderTest::testFixtureWithBitTypecallsFixtureProviderTest::testFixtureWithBooleanTypecallsFixtureProviderTest::testFixtureWithCustomSchemaParsercallsFixtureProviderTest::testFixtureWithCustomTypeMappercallsFixtureProviderTest::testFixtureWithDateTypescallsFixtureProviderTest::testFixtureWithDialectOverridecallsFixtureProviderTest::testFixtureWithEnumcallsFixtureProviderTest::testFixtureWithGeneratedColumnSkippedcallsFixtureProviderTest::testFixtureWithJsoncallsFixtureProviderTest::testFixtureWithNullableColumnscallsFixtureProviderTest::testFixtureWithOverridescallsFixtureProviderTest::testFixtureWithSetcallsFixtureProviderTest::testFixtureWithSpatialTypescallsFixtureProviderTest::testFixtureWithSqliteDialectcallsFixtureProviderTest::testFixtureWithStringTypescallsFixtureProviderTest::testFixtureWithUnsignedTypescallsFixtureProviderTest::testGetSchemaResolverGeneratingAFixtureAlsoMakesItAvailableToFixturescallsFixtureProviderTest::testGetVersionKeepsTheSelectedReleasecallsFixtureProviderTest::testSchemaCacheDistinguishesDifferentDialectscallsFixtureProviderTest::testSchemaCacheUsesDialectInKeycallsSqlSchemaProviderTest::testCachesSchemasThroughThePublicProviderContractcalls
Calls 2
- method-call FixtureProvider::getSchema() line 96
- method-call FixtureGenerator::generate() line 97
public function fixtures(
FixturePlan|string $plan,
array<string, int|array<mixed>|TableOverrides> $overrides = [],
): FixtureSetGenerate the rows a plan describes.
Every table the plan names has to have been registered, either through registerSchema() or by generating a fixture from its DDL first.
Parameters
$plan | FixturePlan|string | A plan, or the relation syntax for one |
$overrides | array<string, int|array<mixed>|TableOverrides> | Table name => what to override |
Returns
Test cases 3
Calls 3
- new PlanGenerator line 111
- method-call PlanGenerator::generate() line 113
- static-call FixturePlan::from() line 113
public function registerSchema(string $createTableSql): TableSchemaMake a table available to fixtures() under its own name.
Parameters
$createTableSql | string |
Returns
Test cases 5
FixtureGenerationBench::setUpcallsFixtureProviderTest::testFixturesGeneratesLinkedRowsFromRegisteredSchemascallsFixtureProviderTest::testFixturesSelectsRelationsForEveryDialectcallsFixtureProviderTest::testRegisterSchemaARegisteredSchemaBecomesAvailableToFixturescallsFixtureProviderTest::testRegisterSchemaReturnsTheParsedTablecalls
Calls 1
- method-call FixtureProvider::getSchema() line 121
public function getSchemaResolver(): StaticSchemaResolverThe registry backing fixtures().
Returns
public function getFixtureGenerator(): FixtureGeneratorGet the underlying fixture generator.
Returns
Test cases 1
public function getDialect(): stringGet the default dialect.
Returns
stringpublic function getVersion(): stringGet the version tag of the release statements are read for.
Returns
stringPrivate surface 5§
Implementation details, listed for orientation only.
private FixtureGenerator $fixtureGeneratorprivate string $dialectprivate ServerVersion $versionprivate Generator $fakerprivate StaticSchemaResolver $schemaResolverTest cases 63§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 46
FixtureProviderTest::testCacheDistinguishesDifferentSqlSameDialectcallsFixtureProviderTest::testCachedSchemaDistinguishesDialectscallsFixtureProviderTest::testCacheKeyIncludesDialectcallsFixtureProviderTest::testCacheSeparatesDefaultAndOverrideDialectcallsFixtureProviderTest::testCustomSchemaParserIsPreservedcallsFixtureProviderTest::testCustomTypeMapperIsPreservedcallsFixtureProviderTest::testDefaultDialectIsUsedWhenNullDialectPassedcallsFixtureProviderTest::testDialectOverrideUsesOverrideNotDefaultcallsFixtureProviderTest::testFixtureCachesSchemacallsFixtureProviderTest::testFixtureCanOverrideAutoIncrementcallsFixtureProviderTest::testFixtureHydratesClasscallsFixtureProviderTest::testFixtureReadsOneStatementForAnotherReleasecallsFixtureProviderTest::testFixtureResultIsReproducibleWithSeedcallsFixtureProviderTest::testFixtureReturnsArraycallsFixtureProviderTest::testFixtureSameDialectUsesInternalParsercallsFixtureProviderTest::testFixturesGeneratesLinkedRowsFromRegisteredSchemascallsFixtureProviderTest::testFixtureSkipsAutoIncrementcallsFixtureProviderTest::testFixturesSelectsRelationsForEveryDialectcallsFixtureProviderTest::testFixtureWithAllNumericTypescallsFixtureProviderTest::testFixtureWithBinaryColumnscallsFixtureProviderTest::testFixtureWithBitTypecallsFixtureProviderTest::testFixtureWithBooleanTypecallsFixtureProviderTest::testFixtureWithCustomSchemaParsercallsFixtureProviderTest::testFixtureWithCustomTypeMappercallsFixtureProviderTest::testFixtureWithDateTypescallsFixtureProviderTest::testFixtureWithDialectOverridecallsFixtureProviderTest::testFixtureWithEnumcallsFixtureProviderTest::testFixtureWithGeneratedColumnSkippedcallsFixtureProviderTest::testFixtureWithJsoncallsFixtureProviderTest::testFixtureWithNullableColumnscallsFixtureProviderTest::testFixtureWithOverridescallsFixtureProviderTest::testFixtureWithSetcallsFixtureProviderTest::testFixtureWithSpatialTypescallsFixtureProviderTest::testFixtureWithSqliteDialectcallsFixtureProviderTest::testFixtureWithStringTypescallsFixtureProviderTest::testFixtureWithUnsignedTypescallsFixtureProviderTest::testGetDialectDefaultsToMysqlcallsFixtureProviderTest::testGetFixtureGeneratorcallsFixtureProviderTest::testGetSchemaResolverGeneratingAFixtureAlsoMakesItAvailableToFixturescallsFixtureProviderTest::testGetVersionDefaultsToTheNewestShippedMysqlcallsFixtureProviderTest::testGetVersionKeepsTheSelectedReleasecallsFixtureProviderTest::testGetVersionRejectsATagOfAnotherDialectcallsFixtureProviderTest::testRegisterSchemaARegisteredSchemaBecomesAvailableToFixturescallsFixtureProviderTest::testRegisterSchemaReturnsTheParsedTablecallsFixtureProviderTest::testSchemaCacheDistinguishesDifferentDialectscallsFixtureProviderTest::testSchemaCacheUsesDialectInKeycalls
Other tests reaching this symbol 17
FixtureGenerationBench::benchRelatedRowscallsFixtureGenerationBench::benchWarmRowcallsFixtureGenerationBench::setUpcallsInsertSelectTarget::__constructcallsInsertSelectTarget::__invokecallsPostgreSqlEndToEndTest::fixtureReproducibleWithSeedcallsPostgreSqlEndToEndTest::fixtureWithArrayTypescallsPostgreSqlEndToEndTest::fixtureWithCommonTypescallsPostgreSqlEndToEndTest::fixtureWithGeneratedColumncallsPostgreSqlEndToEndTest::fixtureWithNumericPrecisioncallsPostgreSqlEndToEndTest::fixtureWithOverridescallsPostgreSqlEndToEndTest::fixtureWithPgSpecificTypescallsPostgreSqlEndToEndTest::fixtureWithSerialTypescallsPostgreSqlEndToEndTest::fixtureWithTimestampVariantscallsSqliteIntegrationTest::fixtureProviderDialectOverridecallsSqliteIntegrationTest::fixtureProviderWithSqliteDialectcallsSqlSchemaProviderTest::testCachesSchemasThroughThePublicProviderContractcalls