. */ namespace Doctrine\DBAL\Schema\Visitor; use Doctrine\DBAL\Platforms\AbstractPlatform, Doctrine\DBAL\Schema\Table, Doctrine\DBAL\Schema\Schema, Doctrine\DBAL\Schema\Column, Doctrine\DBAL\Schema\ForeignKeyConstraint, Doctrine\DBAL\Schema\Constraint, Doctrine\DBAL\Schema\Sequence, Doctrine\DBAL\Schema\Index; /** * Gather SQL statements that allow to completly drop the current schema. * * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @link www.doctrine-project.org * @since 2.0 * @version $Revision$ * @author Benjamin Eberlei */ class DropSchemaSqlCollector implements Visitor { /** * @var array */ private $_constraints = array(); /** * @var array */ private $_sequences = array(); /** * @var array */ private $_tables = array(); /** * * @var \Doctrine\DBAL\Platforms\AbstractPlatform */ private $_platform = null; /** * @param AbstractPlatform $platform */ public function __construct(AbstractPlatform $platform) { $this->_platform = $platform; } /** * @param Schema $schema */ public function acceptSchema(Schema $schema) { } /** * @param Table $table */ public function acceptTable(Table $table) { $this->_tables = array_merge($this->_tables, $this->_platform->getDropTableSql($table->getName())); } /** * @param Column $column */ public function acceptColunn(Table $table, Column $column) { } /** * @param Table $localTable * @param ForeignKeyConstraint $fkConstraint */ public function acceptForeignKey(Table $localTable, ForeignKeyConstraint $fkConstraint) { $this->_constraints = array_merge($this->_constraints, $this->_platform->getDropForeignKeySql( $localTable->getName(), $fkConstraint->getName() ) ); } /** * @param Table $table * @param Constraint $constraint */ public function acceptCheckConstraint(Table $table, Constraint $constraint) { } /** * @param Table $table * @param Index $index */ public function acceptIndex(Table $table, Index $index) { } /** * @param Sequence $sequence */ public function acceptSequence(Sequence $sequence) { $this->_sequences = array_merge( $this->_sequences, $this->_platform->getDropSequenceSql($sequence->getName()) ); } /** * @return array */ public function clearQueries() { $this->_constraints = $this->_sequences = $this->_tables = array(); } /** * @return array */ public function getQueries() { return array_merge( $this->_constraints, $this->_sequences, $this->_tables ); } }