noem / tiny-proxy
模块化服务容器
dev-main
2023-03-22 18:54 UTC
Requires
- php: ^8.0
Requires (Dev)
- mockery/mockery: ^1.4
- noem/composer-file-embed: dev-master
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.6
This package is auto-updated.
Last update: 2024-09-22 22:04:46 UTC
README
这是一个小工具,通过在运行时创建完全兼容的代理对象来帮助打破递归依赖链。它还可以用来延迟实例化逻辑,直到对象第一次被访问。它通过反射生成代理类的PHP代码(您可以通过eval
或持久化/require来执行),这个类通过一个只返回实际对象的构造函数进行实例化。目前,此包只涵盖原始代码生成。磁盘缓存或创建面向对象的包装器由消费者负责。
示例
use Noem\TinyProxy\TinyProxy; class User{ public function __construct(public string $name, public int $age) {} } $php = TinyProxy::generateCode(User::class); $proxyClassName = TinyProxy::proxyClassName(User::class) eval($php); $proxy = new $proxyClassName(fn() => new User('John', 42)); assert( $proxy instanceof User ); // true $name = $proxy->name // 'John'