ColumnDiff.php 1.17 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
     */
28
    public function __construct($oldColumnName, Column $column, array $changedProperties = [], ?Column $fromColumn = null)
29
    {
30 31
        $this->oldColumnName     = $oldColumnName;
        $this->column            = $column;
32
        $this->changedProperties = $changedProperties;
33
        $this->fromColumn        = $fromColumn;
34 35
    }

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

    /**
47
     * @return Identifier
48 49 50
     */
    public function getOldColumnName()
    {
51 52 53
        $quote = $this->fromColumn && $this->fromColumn->isQuoted();

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