Integrates the SafeMySQL library with PHPNomad's database layer. Provides concrete strategies that plug a SafeMySQL instance into the abstractions declared by phpnomad/mysql-integration and phpnomad/db.
composer require phpnomad/safemysql-integrationSafeMySqlDatabaseStrategyimplementsDatabaseStrategyfromphpnomad/mysql-integration. It uses SafeMySQL's placeholder syntax (?s,?i,?a,?u,?n,?p) for parameter substitution, with extra handling for row tuples and associative arrays so bulk inserts and updates format correctly.SafeMySqlAtomicOperationStrategyimplementsAtomicOperationStrategyfromphpnomad/db. It wraps a callable inSTART TRANSACTION/COMMIT/ROLLBACK, rolling back and re-throwing on anyThrowable.
- PHP 8.2+
phpnomad/mysql-integrationphpnomad/dbphpnomad/datastorecolshrapnel/safemysql
Create one SafeMySQL instance for the application and bind both strategies to it in your container. The strategies share the same connection so transaction state carries across queries run through the database strategy.
<?php
use PHPNomad\Database\Interfaces\AtomicOperationStrategy;
use PHPNomad\MySql\Integration\Interfaces\DatabaseStrategy;
use PHPNomad\SafeMySql\Integration\Strategies\SafeMySqlAtomicOperationStrategy;
use PHPNomad\SafeMySql\Integration\Strategies\SafeMySqlDatabaseStrategy;
use SafeMySQL;
$db = new SafeMySQL([
'host' => 'localhost',
'user' => 'app',
'pass' => 'secret',
'db' => 'myapp',
]);
$container->bindFactory(
DatabaseStrategy::class,
fn() => new SafeMySqlDatabaseStrategy($db)
);
$container->bindFactory(
AtomicOperationStrategy::class,
fn() => new SafeMySqlAtomicOperationStrategy($db)
);From here, any PHPNomad component that depends on DatabaseStrategy or AtomicOperationStrategy resolves through the SafeMySQL-backed implementations.
Framework docs live at phpnomad.com. For the underlying library, see the SafeMySQL repository and its placeholder reference.
MIT. See LICENSE.