Storm\Drivers\Platforms\Development\Syncing\DatabaseSyncer::GetTableColumns PHP Метод

GetTableColumns() приватный Метод

private GetTableColumns ( array $Columns, array $CurrentColumns )
$Columns array
$CurrentColumns array
    private function GetTableColumns(array $Columns, array $CurrentColumns)
    {
        $ColumnNamesMap = array_flip(array_keys($Columns));
        $CurrentColumnNamesMap = array_flip(array_keys($CurrentColumns));
        $ColumnNamesToModify = array_intersect_key($CurrentColumnNamesMap, $ColumnNamesMap);
        $ColumnsToModify = [];
        foreach ($ColumnNamesToModify as $ColumnName => $CurrentPosition) {
            $Position = $ColumnNamesMap[$ColumnName];
            if ($Columns[$ColumnName]->Is($CurrentColumns[$ColumnName]) && $Position === $CurrentPosition) {
                continue;
            }
            $ColumnsToModify[$Position] = $Columns[$ColumnName];
        }
        $ColumnNamesToAdd = array_diff_key($ColumnNamesMap, $CurrentColumnNamesMap);
        $ColumnsToAdd = [];
        foreach ($ColumnNamesToAdd as $ColumnName => $Position) {
            $ColumnsToAdd[$Position] = $Columns[$ColumnName];
        }
        $ColumnNamesToRemove = array_diff_key($CurrentColumnNamesMap, $ColumnNamesMap);
        $ColumnsToRemove = [];
        foreach ($ColumnNamesToRemove as $ColumnName => $Position) {
            $ColumnsToRemove[$Position] = $CurrentColumns[$ColumnName];
        }
        return [$ColumnsToModify, $ColumnsToAdd, $ColumnsToRemove];
    }