-
-
Notifications
You must be signed in to change notification settings - Fork 0
Recipes
Muhammet Şafak edited this page Jun 11, 2026
·
1 revision
Practical, copy-pasteable patterns for common tasks. Each recipe is grounded in the real API.
| Recipe | What it shows |
|---|---|
| Testing Migrations | Running migrations against in-memory SQLite in your test suite. |
| Deploying Migrations | Applying migrations safely during a deploy or in CI. |
$migrations = new InitPHP\Barbarian\Migrations($pdo, __DIR__ . '/migrations');
foreach ($migrations->getMigrations() as $class) {
$migrations->upMigration(new $class());
}
foreach ($migrations->getStatuses() as $version => $status) {
printf("%-12s %s\n", $status?->name ?? 'pending', $version);
}$applied = array_filter(
$migrations->getStatuses(),
static fn ($status) => $status === InitPHP\Barbarian\MigrationStatus::Up
);
if ($applied !== []) {
$version = array_key_last($applied);
$class = $migrations->getMigrations()[$version];
$migrations->downMigration(new $class());
}foreach ($migrations->getMigrations() as $class) {
if (!$migrations->upMigration(new $class())) {
// already up, or up() returned false — decide per your policy
continue;
}
}Remember: a thrown
\PDOExceptionfrom a migration aborts the loop. Wrap the loop in atry/catchif you want to convert it into a non-zero exit code with a friendly message. See Exceptions.
initphp/barbarian · MIT License · part of the InitPHP family
Source · Issues · Discussions · Packagist · Contributing · Security Policy
Getting Started
Guide
Reference
Practical Guides
Help