tractorcow/classproxy

0.1.2 2018-03-20 01:57 UTC

This package is auto-updated.

Last update: 2020-07-23 23:18:48 UTC


README

Build Status SilverStripe supported module

Dynamically scaffold proxy classes that actually extend the class being proxied, allowing them to be used in type-strict applications.

No it's not prophecy because this is designed for partial proxies, not testing.

Examples

// Create a proxy creator
$proxy = ProxyFactory::create(DataBase::class)
    ->addMethod('connect', function ($args, $next) use ($logger) {
        $logger->log("Connecting to server " . $args[0]['server'];
        return $next(...$args);
    });
    
// Generate instance of our proxy
$instance = $proxy->instance();
assert($instance instanceof Database); // Yep!

// Connects to underlying database, logging the call
$instance->connect([
    'server' => 'localhost',
    'user' => 'root'
]);