Файловый менеджер - Редактировать - /home/avadvi5/calendar.aeronextgen.com/davis/vendor/doctrine/migrations/src/Generator/DiffGenerator.php
Ðазад
<?php declare(strict_types=1); namespace Doctrine\Migrations\Generator; use Doctrine\DBAL\Configuration as DBALConfiguration; use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Schema\AbstractAsset; use Doctrine\DBAL\Schema\AbstractSchemaManager; use Doctrine\DBAL\Schema\Schema; use Doctrine\Migrations\Generator\Exception\NoChangesDetected; use Doctrine\Migrations\Provider\SchemaProvider; use function method_exists; use function preg_match; use function strpos; use function substr; /** * The DiffGenerator class is responsible for comparing two Doctrine\DBAL\Schema\Schema instances and generating a * migration class with the SQL statements needed to migrate from one schema to the other. * * @internal */ class DiffGenerator { /** @param AbstractSchemaManager<AbstractPlatform> $schemaManager */ public function __construct( private readonly DBALConfiguration $dbalConfiguration, private readonly AbstractSchemaManager $schemaManager, private readonly SchemaProvider $schemaProvider, private readonly AbstractPlatform $platform, private readonly Generator $migrationGenerator, private readonly SqlGenerator $migrationSqlGenerator, private readonly SchemaProvider $emptySchemaProvider, ) { } /** @throws NoChangesDetected */ public function generate( string $fqcn, string|null $filterExpression, bool $formatted = false, int $lineLength = 120, bool $checkDbPlatform = true, bool $fromEmptySchema = false, ): string { if ($filterExpression !== null) { $this->dbalConfiguration->setSchemaAssetsFilter( static function ($assetName) use ($filterExpression) { if ($assetName instanceof AbstractAsset) { $assetName = $assetName->getName(); } return preg_match($filterExpression, $assetName); }, ); } $fromSchema = $fromEmptySchema ? $this->createEmptySchema() : $this->createFromSchema(); $toSchema = $this->createToSchema(); // prior to DBAL 4.0, the schema name was set to the first element in the search path, // which is not necessarily the default schema name if ( ! method_exists($this->schemaManager, 'getSchemaSearchPaths') && $this->platform->supportsSchemas() ) { $defaultNamespace = $toSchema->getName(); if ($defaultNamespace !== '') { $toSchema->createNamespace($defaultNamespace); } } $comparator = $this->schemaManager->createComparator(); $upSql = $this->platform->getAlterSchemaSQL($comparator->compareSchemas($fromSchema, $toSchema)); $up = $this->migrationSqlGenerator->generate( $upSql, $formatted, $lineLength, $checkDbPlatform, ); $downSql = $this->platform->getAlterSchemaSQL($comparator->compareSchemas($toSchema, $fromSchema)); $down = $this->migrationSqlGenerator->generate( $downSql, $formatted, $lineLength, $checkDbPlatform, ); if ($up === '' && $down === '') { throw NoChangesDetected::new(); } return $this->migrationGenerator->generateMigration( $fqcn, $up, $down, ); } private function createEmptySchema(): Schema { return $this->emptySchemaProvider->createSchema(); } private function createFromSchema(): Schema { return $this->schemaManager->introspectSchema(); } private function createToSchema(): Schema { $toSchema = $this->schemaProvider->createSchema(); $schemaAssetsFilter = $this->dbalConfiguration->getSchemaAssetsFilter(); if ($schemaAssetsFilter !== null) { foreach ($toSchema->getTables() as $table) { $tableName = $table->getName(); if ($schemaAssetsFilter($this->resolveTableName($tableName))) { continue; } $toSchema->dropTable($tableName); } } return $toSchema; } /** * Resolve a table name from its fully qualified name. The `$name` argument * comes from Doctrine\DBAL\Schema\Table#getName which can sometimes return * a namespaced name with the form `{namespace}.{tableName}`. This extracts * the table name from that. */ private function resolveTableName(string $name): string { $pos = strpos($name, '.'); return $pos === false ? $name : substr($name, $pos + 1); } }
| ver. 1.1 | |
.
| PHP 8.3.30 | Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ Ñтраницы: 0 |
proxy
|
phpinfo
|
ÐаÑтройка