Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Что у вас за приколы, ставите минус, а комментариев нет... Хоть объясните почему так))
return bool Возвращает true, если миграция была успешно создана. В остальных случаях выкидывает исключениеНе возвращайте ничего лучше, потому что смысла нет. Если бы возвращалось true\false, то я в вызывающем коде мог бы проверить и сообщение какое вывести
return ['История миграций пуста'];Зачем? Если я запрашиваю список миграций, зачем Вы мне отдаёте массив с сообщением, что миграций нет? Я проверю результат на количество элементов и подумаю, что одна миграция есть всё таки. Или мне на текст завязаться?
throw new SqlMigrationException(«Ошибка применения миграция {$name}»);А какая ошибка? Зачем Вы лишаете меня возможности посмотреть ошибку, которую вернула БД?
$executeCount = $count === 0? $executeListCount: min($count, $executeListCount);Почему бы это не убрать в метод execute, вместо дублирования в up и down?
Эти методы сами за себя говорят. Но на всякий случай, укажу тут их описание из PHPDoc:Честно, эти методы за себя не говорят ни с докой, ни без неё)
param int $count Количество миграция (0 — относительно всех)Что такое 'относительно всех'?
Возвращает список применения и ошибочных миграцийЧто за список применения? Применённых?
Ключ error добавляется только в случае ошибки выполнения миграции.Зачем? У Вас там массив, пусть error всегда будет, чтоб на количество его проверять, а не на наличие, а потом на количество
param int $limit Ограничение длины списка (null — полный список)Почему до этого был 0 для вывода всего, а тут null?
Большинство методов возвращает наборы данных или логические значения. Данный подход позволит написать практически любую обертку для собственных нужд.Непонятно
protected ?DatabaseInterface $database;Почему БД опциональна?
Зачем? У Вас там массив, пусть error всегда будет, чтоб на количество его проверять, а не на наличие, а потом на количество
if (array_key_exists('success', $migrations)) {
foreach ($migrations['success'] as $successMigration) {
Console::writeLine("Миграция {$successMigration['name']} успешно применена", Console::FG_GREEN);
}
}
if (array_key_exists('error', $migrations)) {
foreach ($migrations['error'] as $errorMigration) {
Console::writeLine("Ошибка применения миграции {$errorMigration['name']}", Console::FG_RED);
Console::writeLine($errorMigration['errorMessage'], Console::FG_WHITE);
}
}
Что такое 'относительно всех'?
Что если мне нужно свалиться на первой неуспешной миграции, а не идти до конца?
} catch (SqlMigrationException | PDOException $exception) {
$migrationInfo['error'][] = array_merge($migration, ['errorMessage' => $exception->getMessage()]);
break;
}
Компонентный подход. Компонент SQL миграций на PHP