ColumnDiff.php 1.1 KB
Newer Older
1 2
<?php

Michael Moravec's avatar
Michael Moravec committed
3 4
declare(strict_types=1);

5 6
namespace Doctrine\DBAL\Schema;

7 8
use function in_array;

9
/**
Benjamin Morel's avatar
Benjamin Morel committed
10
 * Represents the change of a column.
11 12 13
 */
class ColumnDiff
{
14
    /** @var string */
15 16
    public $oldColumnName;

17
    /** @var Column */
18 19
    public $column;

20
    /** @var array<int, string> */
21
    public $changedProperties = [];
22

Sergei Morozov's avatar
Sergei Morozov committed
23
    /** @var Column|null */
24 25
    public $fromColumn;

Benjamin Morel's avatar
Benjamin Morel committed
26
    /**
27
     * @param array<string> $changedProperties
Benjamin Morel's avatar
Benjamin Morel committed
28
     */
29
    public function __construct(string $oldColumnName, Column $column, array $changedProperties = [], ?Column $fromColumn = null)
30
    {
31 32
        $this->oldColumnName     = $oldColumnName;
        $this->column            = $column;
33
        $this->changedProperties = $changedProperties;
34
        $this->fromColumn        = $fromColumn;
35 36
    }

37
    public function hasChanged(string $propertyName) : bool
38
    {
39
        return in_array($propertyName, $this->changedProperties, true);
40
    }
41

42
    public function getOldColumnName() : Identifier
43
    {
44
        $quote = $this->fromColumn !== null && $this->fromColumn->isQuoted();
45 46

        return new Identifier($this->oldColumnName, $quote);
47
    }
Benjamin Eberlei's avatar
Benjamin Eberlei committed
48
}