Skip to content

tractorcow/classproxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Partial proxy class builder

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.

Installation

composer require tractorcow/classproxy

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'
]);