Skip to content

Commit

Permalink
PHP8.0 notation (#179)
Browse files Browse the repository at this point in the history
* feat Constructor Property Promotion

* feat Mixed type

* feat Union Types

* feat Allow trailing comma in parameter list

* feat Throw expression
  • Loading branch information
ucan-lab authored Feb 13, 2022
1 parent d6aeeb8 commit 1ce9456
Show file tree
Hide file tree
Showing 47 changed files with 152 additions and 358 deletions.
5 changes: 1 addition & 4 deletions src/Dacapo/Application/UseCase/DacapoCommandUseCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,13 @@

final class DacapoCommandUseCase
{
private MigrationGenerator $generator;

/**
* DacapoCommandUseCase constructor.
* @param MigrationGenerator $generator
*/
public function __construct(
MigrationGenerator $generator
private MigrationGenerator $generator,
) {
$this->generator = $generator;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,10 @@

final class DacapoCommandUseCaseInput
{
/**
* @var array<string, mixed>
*/
public array $schemaBodies;

/**
* @param array<string, mixed> $schemaBodies
*/
public function __construct(array $schemaBodies)
public function __construct(public array $schemaBodies)
{
$this->schemaBodies = $schemaBodies;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,10 @@

final class DacapoCommandUseCaseOutput
{
/**
* @var array<int, array<string, string>>
*/
public array $migrationBodies;

/**
* @param array<int, array<string, string>> $migrationBodies
*/
public function __construct(array $migrationBodies)
public function __construct(public array $migrationBodies)
{
$this->migrationBodies = $migrationBodies;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,12 @@
final class SchemaToConstraintForeignKeyMigrationConverter
{
private const MIGRATION_COLUMN_INDENT = ' ';
private MigrationUpdateStub $migrationUpdateStub;

/**
* @param MigrationUpdateStub $migrationUpdateStub
*/
public function __construct(MigrationUpdateStub $migrationUpdateStub)
public function __construct(private MigrationUpdateStub $migrationUpdateStub)
{
$this->migrationUpdateStub = $migrationUpdateStub;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,12 @@
final class SchemaToCreateIndexMigrationConverter
{
private const MIGRATION_COLUMN_INDENT = ' ';
private MigrationUpdateStub $migrationUpdateStub;

/**
* @param MigrationUpdateStub $migrationUpdateStub
*/
public function __construct(MigrationUpdateStub $migrationUpdateStub)
public function __construct(private MigrationUpdateStub $migrationUpdateStub)
{
$this->migrationUpdateStub = $migrationUpdateStub;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,10 @@ final class SchemaToCreateTableMigrationConverter
{
private const MIGRATION_COLUMN_INDENT = ' ';

private DatabaseBuilder $databaseBuilder;
private MigrationCreateStub $migrationCreateStub;

public function __construct(
DatabaseBuilder $databaseBuilder,
MigrationCreateStub $migrationCreateStub
private DatabaseBuilder $databaseBuilder,
private MigrationCreateStub $migrationCreateStub,
) {
$this->databaseBuilder = $databaseBuilder;
$this->migrationCreateStub = $migrationCreateStub;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,24 +10,17 @@

final class MigrationGenerator
{
private SchemaToCreateTableMigrationConverter $schemaToCreateTableMigrationConverter;
private SchemaToCreateIndexMigrationConverter $schemaToCreateIndexMigrationConverter;
private SchemaToConstraintForeignKeyMigrationConverter $schemaToConstraintForeignKeyMigrationConverter;

/**
* MigrationGenerator constructor.
* @param SchemaToCreateTableMigrationConverter $schemaToCreateTableMigrationConverter
* @param SchemaToCreateIndexMigrationConverter $schemaToCreateIndexMigrationConverter
* @param SchemaToConstraintForeignKeyMigrationConverter $schemaToConstraintForeignKeyMigrationConverter
*/
public function __construct(
SchemaToCreateTableMigrationConverter $schemaToCreateTableMigrationConverter,
SchemaToCreateIndexMigrationConverter $schemaToCreateIndexMigrationConverter,
SchemaToConstraintForeignKeyMigrationConverter $schemaToConstraintForeignKeyMigrationConverter
private SchemaToCreateTableMigrationConverter $schemaToCreateTableMigrationConverter,
private SchemaToCreateIndexMigrationConverter $schemaToCreateIndexMigrationConverter,
private SchemaToConstraintForeignKeyMigrationConverter $schemaToConstraintForeignKeyMigrationConverter,
) {
$this->schemaToCreateTableMigrationConverter = $schemaToCreateTableMigrationConverter;
$this->schemaToCreateIndexMigrationConverter = $schemaToCreateIndexMigrationConverter;
$this->schemaToConstraintForeignKeyMigrationConverter = $schemaToConstraintForeignKeyMigrationConverter;
}

/**
Expand Down
11 changes: 4 additions & 7 deletions src/Dacapo/Domain/MigrationFile/MigrationFile.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,15 @@

final class MigrationFile
{
private string $name;
private string $contents;

/**
* MigrationFile constructor.
* @param string $name
* @param string $contents
*/
public function __construct(string $name, string $contents)
{
$this->name = $name;
$this->contents = $contents;
public function __construct(
private string $name,
private string $contents,
) {
}

/**
Expand Down
29 changes: 10 additions & 19 deletions src/Dacapo/Domain/Schema/Column/Column.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,6 @@

final class Column
{
private ColumnName $name;
private ColumnType $type;
private ColumnTypeArgs $typeArgs;
private ColumnModifierList $modifierList;

/**
* Column constructor.
* @param ColumnName $name
Expand All @@ -32,24 +27,22 @@ final class Column
* @param ColumnModifierList $modifierList
*/
public function __construct(
ColumnName $name,
ColumnType $type,
ColumnTypeArgs $typeArgs,
ColumnModifierList $modifierList
private ColumnName $name,
private ColumnType $type,
private ColumnTypeArgs $typeArgs,
private ColumnModifierList $modifierList,
) {
$this->name = $name;
$this->type = $type;
$this->typeArgs = $typeArgs;
$this->modifierList = $modifierList;
}

/**
* @param ColumnName $columnName
* @param string|bool|array<string, mixed>|null $attributes
* @param array<string, mixed>|bool|string|null $attributes
* @return static
*/
public static function factory(ColumnName $columnName, $attributes): self
{
public static function factory(
ColumnName $columnName,
array|bool|string|null $attributes,
): self {
if (is_string($attributes)) {
$columnType = ColumnTypeFactory::factory($attributes);

Expand All @@ -69,9 +62,7 @@ public static function factory(ColumnName $columnName, $attributes): self
new ColumnModifierList([])
);
} elseif (is_array($attributes)) {
if (isset($attributes['type']) === false) {
throw new InvalidArgumentException(sprintf('columns.%s.type field is required', $columnName->getName()));
}
$attributes['type'] ?? throw new InvalidArgumentException(sprintf('columns.%s.type field is required', $columnName->getName()));

$columnType = ColumnTypeFactory::factory($attributes['type']);

Expand Down
8 changes: 1 addition & 7 deletions src/Dacapo/Domain/Schema/Column/ColumnList.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,11 @@
*/
final class ColumnList implements IteratorAggregate
{
/**
* @var array<int, Column>
*/
private array $attributes;

/**
* @param array<int, Column> $attributes
*/
public function __construct(array $attributes)
public function __construct(private array $attributes)
{
$this->attributes = $attributes;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,11 @@

abstract class ColumnModifier
{
private ?ColumnModifierArgs $columnModifierArgs;

/**
* @param ?ColumnModifierArgs $columnModifierArgs
*/
public function __construct(?ColumnModifierArgs $columnModifierArgs)
public function __construct(private ?ColumnModifierArgs $columnModifierArgs)
{
$this->columnModifierArgs = $columnModifierArgs;
}

abstract public function getName(): string;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,11 @@

final class BooleanColumnModifierArgs implements ColumnModifierArgs
{
private bool $value;

/**
* @param bool $value
*/
public function __construct(bool $value)
public function __construct(private bool $value)
{
$this->value = $value;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,11 @@

final class IntColumnModifierArgs implements ColumnModifierArgs
{
private int $value;

/**
* @param int $value
*/
public function __construct(int $value)
public function __construct(private int $value)
{
$this->value = $value;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,11 @@

final class MixedColumnModifierArgs implements ColumnModifierArgs
{
private mixed $value;

/**
* @param mixed $value
*/
public function __construct(mixed $value)
public function __construct(private mixed $value)
{
$this->value = $value;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,11 @@

final class StringColumnModifierArgs implements ColumnModifierArgs
{
private string $value;

/**
* @param string $value
*/
public function __construct(string $value)
public function __construct(private string $value)
{
$this->value = $value;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,20 +37,18 @@ final class ColumnModifierFactory
* @param string|bool|int|null $value
* @return ColumnModifier
*/
public static function factory(string $name, $value): ColumnModifier
public static function factory(string $name, string|bool|int|null $value): ColumnModifier
{
if ($class = self::MAPPING_CLASS[$name] ?? null) {
if (is_string($value)) {
return new $class(new StringColumnModifierArgs($value));
} elseif (is_bool($value)) {
return new $class(new BooleanColumnModifierArgs($value));
} elseif (is_int($value)) {
return new $class(new IntColumnModifierArgs($value));
}
$class = self::MAPPING_CLASS[$name] ?? throw new InvalidArgumentException(sprintf('%s column modifier does not exist', $name));

return new $class(null);
if (is_string($value)) {
return new $class(new StringColumnModifierArgs($value));
} elseif (is_bool($value)) {
return new $class(new BooleanColumnModifierArgs($value));
} elseif (is_int($value)) {
return new $class(new IntColumnModifierArgs($value));
}

throw new InvalidArgumentException(sprintf('%s column modifier does not exist', $name));
return new $class(null);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,11 @@
*/
final class ColumnModifierList implements IteratorAggregate
{
/**
* @var array<int, ColumnModifier>
*/
private array $attributes;

/**
* @param array<int, ColumnModifier> $attributes
*/
public function __construct(array $attributes)
public function __construct(private array $attributes)
{
$this->attributes = $attributes;
}

/**
Expand Down
5 changes: 1 addition & 4 deletions src/Dacapo/Domain/Schema/Column/ColumnName.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,12 @@

final class ColumnName
{
private ?string $name;

/**
* ColumnName constructor.
* @param string|null $name
*/
public function __construct(?string $name)
public function __construct(private ?string $name)
{
$this->name = $name;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,8 @@ final class ColumnTypeFactory
*/
public static function factory(string $name): ColumnType
{
if ($class = self::MAPPING_CLASS[$name] ?? null) {
return new $class();
}
$class = self::MAPPING_CLASS[$name] ?? throw new InvalidArgumentException(sprintf('%s column type does not exist', $name));

throw new InvalidArgumentException(sprintf('%s column type does not exist', $name));
return new $class();
}
}
Loading

0 comments on commit 1ce9456

Please sign in to comment.