phpnomad / safemysql-integration
SafeMySQL integration for PHPNomad database layer
Requires
- php: >=8.2
- colshrapnel/safemysql: ^1.0
- phpnomad/datastore: ^2.0
- phpnomad/db: ^2.1
- phpnomad/mysql-integration: ^1.0
Requires (Dev)
- mockery/mockery: ^1.5
- phpunit/phpunit: ^9.6
README
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.
Installation
composer require phpnomad/safemysql-integration
What This Provides
SafeMySqlDatabaseStrategyimplementsDatabaseStrategyfromphpnomad/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.
Requirements
- PHP 8.2+
phpnomad/mysql-integrationphpnomad/dbphpnomad/datastorecolshrapnel/safemysql
Usage
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.
Documentation
Framework docs live at phpnomad.com. For the underlying library, see the SafeMySQL repository and its placeholder reference.
License
MIT. See LICENSE.