Skip to content

Commit e51fd97

Browse files
committed
Mark Table::__construct() as internal
1 parent e720715 commit e51fd97

File tree

4 files changed

+41
-22
lines changed

4 files changed

+41
-22
lines changed

UPGRADE.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ awareness about deprecated code.
88

99
# Upgrade to 4.3
1010

11+
## `Table::__construct()` marked as internal
12+
13+
The `Table::__construct()` method has been marked as internal. Use `Table::editor()` to instantiate an editor and
14+
`TableEditor::create()` to create a table.
15+
1116
## Deprecated `AbstractAsset::getShortestName()`
1217

1318
The `AbstractAsset::getShortestName()` method has been deprecated. Use `AbstractAsset::getName()` instead.

src/Schema/AbstractSchemaManager.php

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -210,15 +210,26 @@ public function listTables(): array
210210
continue;
211211
}
212212

213-
$tables[] = new Table(
214-
$tableName,
215-
$this->_getPortableTableColumnList($tableName, $database, $tableColumns),
216-
$this->_getPortableTableIndexesList($indexColumnsByTable[$tableName] ?? [], $tableName),
217-
[],
218-
$this->_getPortableTableForeignKeysList($foreignKeyColumnsByTable[$tableName] ?? []),
219-
$tableOptionsByTable[$tableName] ?? [],
220-
$configuration,
221-
);
213+
$editor = Table::editor()
214+
->setName($tableName)
215+
->setColumns($this->_getPortableTableColumnList($tableName, $database, $tableColumns))
216+
->setIndexes(
217+
$this->_getPortableTableIndexesList($indexColumnsByTable[$tableName] ?? [], $tableName),
218+
);
219+
220+
if (isset($foreignKeyColumnsByTable[$tableName])) {
221+
$editor->setForeignKeyConstraints(
222+
$this->_getPortableTableForeignKeysList($foreignKeyColumnsByTable[$tableName]),
223+
);
224+
}
225+
226+
if (isset($tableOptionsByTable[$tableName])) {
227+
$editor->setOptions($tableOptionsByTable[$tableName]);
228+
}
229+
230+
$tables[] = $editor
231+
->setConfiguration($configuration)
232+
->create();
222233
}
223234

224235
return $tables;
@@ -328,14 +339,13 @@ public function introspectTable(string $name): Table
328339
throw TableDoesNotExist::new($name);
329340
}
330341

331-
return new Table(
332-
$name,
333-
$columns,
334-
$this->listTableIndexes($name),
335-
[],
336-
$this->listTableForeignKeys($name),
337-
$this->getTableOptions($name),
338-
);
342+
return Table::editor()
343+
->setName($name)
344+
->setColumns($columns)
345+
->setIndexes($this->listTableIndexes($name))
346+
->setForeignKeyConstraints($this->listTableForeignKeys($name))
347+
->setOptions($this->getTableOptions($name))
348+
->create();
339349
}
340350

341351
/**

src/Schema/Schema.php

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -283,12 +283,13 @@ public function createNamespace(string $name): self
283283
*/
284284
public function createTable(string $name): Table
285285
{
286-
$table = new Table($name, [], [], [], [], [], $this->_schemaConfig->toTableConfiguration());
287-
$this->_addTable($table);
286+
$table = Table::editor()
287+
->setName($name)
288+
->setOptions($this->_schemaConfig->getDefaultTableOptions())
289+
->setConfiguration($this->_schemaConfig->toTableConfiguration())
290+
->create();
288291

289-
foreach ($this->_schemaConfig->getDefaultTableOptions() as $option => $value) {
290-
$table->addOption($option, $value);
291-
}
292+
$this->_addTable($table);
292293

293294
return $table;
294295
}

src/Schema/Table.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,9 @@ class Table extends AbstractNamedObject
7272
private int $maxIdentifierLength;
7373

7474
/**
75+
* @internal Use {@link Table::editor()} to instantiate an editor and {@link TableEditor::create()}
76+
* to create a table.
77+
*
7578
* @param array<Column> $columns
7679
* @param array<Index> $indexes
7780
* @param array<UniqueConstraint> $uniqueConstraints

0 commit comments

Comments
 (0)