Examples

1

Switching DB Drivers For Tests

<?php

use Patchwork\{redefine, getFunction, always};

$pdo = new PDO('sqlite:/tmp/demo.db');

redefine('pg_connect', always(null));

redefine('pg_query', function($query, ...$params) use ($pdo) {
    $stmt = $pdo->prepare($query);
    $stmt->execute($params);
    return $stmt;
});

redefine('pg_fetch_assoc', function(PDOStatement $stmt) {
    return $stmt->fetchAssoc();
});

# These will use SQLite instead:

pgsql_connect();
$result = pg_query('SELECT * FROM posts');
var_dump(pg_fetch_assoc($result));
2

A Do-It-Yourself Profiler

<?php

use function Patchwork\{redefine, relay, getMethod};

$profiling = fopen('profiling.csv', 'w');

redefine('App\*', function(...$args) use ($profiling) {
    $begin = microtime(true);
    $result = relay();
    $end = microtime(true);
    fputcsv($profiling, [getMethod(), $end - $begin]);
    return $result;
});