nerd-components/nerd-proxy
Composer 安装命令:
composer require nerd-components/nerd-proxy
包简介
Lightweight Object Proxy
README 文档
README
A lightweight object proxy for PHP 7.
Usage
Create object implementing given interfaces:
<?php use \Nerd\Proxy\Proxy; use \Nerd\Proxy\Handler; interface FooInterface { public function foo(): string; } interface BarInterface { public function bar(): string; } $interfacesList = [FooInterface::class, BarInterface::class]; $handler = new class implements Handler { public function invoke(ReflectionMethod $method, array $args, $proxyInstance) { switch ($method->getName()) { case 'foo': return 'foo called'; case 'bar': return 'bar called'; } } }; $proxy = Proxy::newProxyInstance($handler, $interfacesList); $proxy instanceof FooInterface; // true $proxy instanceof BarInterface; // true $proxy->foo(); // 'foo called' $proxy->bar(); // 'bar called'
Create proxy for given object:
<?php use \Nerd\Proxy\Proxy; use \Nerd\Proxy\Handler; $object = new class { public function foo(): int { echo "Foo! "; return 10; } }; $objectProxy = Proxy::newProxyForObject($object, new class implements Handler { public function invoke(ReflectionMethod $method, array $args, $proxyInstance) { echo "Before call. "; $result = $method->invokeArgs($proxyInstance, $args); echo "After call."; return $result; } }); $objectProxy->foo(); // will print: 'Before call. Foo! After call.' and then return 10
统计信息
- 总下载量: 12
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2017-06-09