1. Go to this page and download the library: Download eniams/safe-migrations library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
namespace App\Statement\MyStatement;
use Eniams\SafeMigrationsBundle\Statement\StatementInterface;
class MyStatement implements StatementInterface
{
protected string $migrationWarning;
public function migrationWarning(): string
{
// The message that will be added in the migration file
return $this->migrationWarning;
}
public function supports(string $migrationUpContent): bool
{
// The logic to determine if the statement is present in the `up` method of migration file.
// The following code can be enough
return str_contains(strtoupper($statement), $this->getStatement());
}
public function getStatement(): string;
{
return 'MY_STATEMENT';
}
}
namespace App\Statement;
use Eniams\SafeMigrationsBundle\Statement\AbstractStatement;
class CustomNotNullStatement extends AbstractStatement
{
public function getStatement(): string
{
return 'NOT NULL';
}
public function migrationWarning(): string
{
return 'Your custom message';
}
}
namespace App\Listener;
use Eniams\SafeMigrationsBundle\Event\UnsafeMigrationEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class MigrationRiskySubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents(): array
{
return [
UnsafeMigrationEvent::class => 'onUnsafeMigration',
];
}
public function onUnsafeMigration(UnsafeMigrationEvent $event)
{
$unsafeMigration = $event->getUnsafeMigration();
// Version20231030215756
$unsafeMigration->getMigrationName();
// Migration file
$unsafeMigration->getMigrationFileContent();
// Migration file with the warning.
$unsafeMigration->getMigrationFileContentWithWarning();
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.