ColumnDiff.php 1.22 KB
Newer Older
1 2 3 4
<?php

namespace Doctrine\DBAL\Schema;

5 6
use function in_array;

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

15
    /** @var Column */
16 17
    public $column;

18
    /** @var string[] */
19
    public $changedProperties = [];
20

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

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

Benjamin Morel's avatar
Benjamin Morel committed
40 41 42
    /**
     * @param string $propertyName
     *
43
     * @return bool
Benjamin Morel's avatar
Benjamin Morel committed
44
     */
45 46
    public function hasChanged($propertyName)
    {
47
        return in_array($propertyName, $this->changedProperties, true);
48
    }
49 50

    /**
51
     * @return Identifier
52 53 54
     */
    public function getOldColumnName()
    {
55
        $quote = $this->fromColumn !== null && $this->fromColumn->isQuoted();
56 57

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