xycc/proxy

dev-master 2022-07-09 12:26 UTC

This package is auto-updated.

Last update: 2024-04-09 16:34:33 UTC


README

// Aa.php
class Aa {
    public function __construct(private string $a) {
        
    }
    
    public function getA() {
        return $this->a . static::class;
    }
}

$enhancer = new \Xycc\Proxy\Enhancer(
    $tempPath, // directory to place the generated files
    __DIR__ . '/Aa.php', // file path of the class to proxy
    new class implements \Xycc\Proxy\Interceptor\MethodInterceptor {
        public function __invoke(object $obj,string $method,array $args,\Xycc\Proxy\Proxy\MethodProxy $methodProxy){
            // before ...
            if ($method === 'getA') {
                $result = $methodProxy->invokeSuper($obj, $method, $args); // call original method
                return 'proxy' . $result;
            }
            
            return $methodProxy->invokeSuper($obj, $method, $args);
        }
    }
);

$proxy = $enhancer->create('~~'/*constructor args*/);
$proxyResult = $proxy->getA(); // proxy~~Aa