1<?php
2
3namespace Doctrine\DBAL\Event;
4
5use Doctrine\DBAL\Platforms\AbstractPlatform;
6use Doctrine\DBAL\Schema\Column;
7use Doctrine\DBAL\Schema\TableDiff;
8
9use function array_merge;
10use function func_get_args;
11use function is_array;
12
13/**
14 * Event Arguments used when SQL queries for renaming table columns are generated inside {@link AbstractPlatform}.
15 */
16class SchemaAlterTableRenameColumnEventArgs extends SchemaEventArgs
17{
18    /** @var string */
19    private $oldColumnName;
20
21    /** @var Column */
22    private $column;
23
24    /** @var TableDiff */
25    private $tableDiff;
26
27    /** @var AbstractPlatform */
28    private $platform;
29
30    /** @var string[] */
31    private $sql = [];
32
33    /**
34     * @param string $oldColumnName
35     */
36    public function __construct($oldColumnName, Column $column, TableDiff $tableDiff, AbstractPlatform $platform)
37    {
38        $this->oldColumnName = $oldColumnName;
39        $this->column        = $column;
40        $this->tableDiff     = $tableDiff;
41        $this->platform      = $platform;
42    }
43
44    /**
45     * @return string
46     */
47    public function getOldColumnName()
48    {
49        return $this->oldColumnName;
50    }
51
52    /**
53     * @return Column
54     */
55    public function getColumn()
56    {
57        return $this->column;
58    }
59
60    /**
61     * @return TableDiff
62     */
63    public function getTableDiff()
64    {
65        return $this->tableDiff;
66    }
67
68    /**
69     * @return AbstractPlatform
70     */
71    public function getPlatform()
72    {
73        return $this->platform;
74    }
75
76    /**
77     * Passing multiple SQL statements as an array is deprecated. Pass each statement as an individual argument instead.
78     *
79     * @param string|string[] $sql
80     *
81     * @return SchemaAlterTableRenameColumnEventArgs
82     */
83    public function addSql($sql)
84    {
85        $this->sql = array_merge($this->sql, is_array($sql) ? $sql : func_get_args());
86
87        return $this;
88    }
89
90    /**
91     * @return string[]
92     */
93    public function getSql()
94    {
95        return $this->sql;
96    }
97}
98