danjones000 / object-spy
用于监视对象私有值/方法的调试库
v0.1.0
2021-10-15 11:28 UTC
Requires
- php: ^7.4 || ^8
Requires (Dev)
- ramsey/devtools: ^1.7
This package is auto-updated.
Last update: 2024-09-15 23:14:00 UTC
README
用于监视对象私有值/方法的调试库
关于
一个调试/测试工具,允许在不使用反射的情况下访问对象或类的私有和受保护属性和方法。
此项目遵守行为准则。通过参与此项目和其社区,你被期望遵守此准则。
安装
使用 Composer 将此包作为依赖项安装。
composer require danjones000/object-spy
使用方法
use Danjones000\Spy\ObjectProxy;
$object = new Object(); // Can be any object.
$spy = new ObjectProxy($object);
// Access private property
echo $spy->privateProperty;
// Set private property
$spy->privateProperty = 42;
// Call private method
$spy->privateMethod();
// Call private method with parameters
$spy->protectedMethod(42, false);
// Run arbitry code on object, allows passing in parameters
// All arguments after the closure are passed as arguments to the closure itself
$spy->call(fn ($abc) => $this->someProp = $this->someMethod($abc) * static::MULTIPLIER, 500);
// PHP allows static methods to be called non-statically, so, this works as well
$spy->staticPrivateMethod();
// Can also access static properties/methods without an object instance
$staticSpy = new ObjectProxy(Object::class);
// If there is an Object::$privateStaticProperty
echo $staticSpy->privateStaticProperty;
$staticSpy->privateStaticProperty = 42;
$staticSpy->privateStaticMethod();
// No direct access to contstants, but we can do this
$staticSpy->call(fn () => static::PRIVATE_CONSTANT); // self also works, of course
实现说明
此类在操作中不使用反射。相反,它使用绑定到实例或类的闭包。
贡献
欢迎贡献!要贡献力量,请熟悉CONTRIBUTING.md。
版权和许可
danjones000/object-spy 库版权 © Dan Jones,并按照 MIT 许可协议(MIT)许可使用。有关更多信息,请参阅LICENSE。