danjones000 / object-spy
Debugging library used to spy on objects' private values/methods
Requires
- php: ^7.4 || ^8
Requires (Dev)
- ramsey/devtools: ^1.7
This package is auto-updated.
Last update: 2024-12-15 23:37:10 UTC
README
Debugging library used to spy on objects' private values/methods
About
A debugging/testing tool which allows access to an object's or class's private and protected properties and methods without the use of Reflection.
This project adheres to a code of conduct. By participating in this project and its community, you are expected to uphold this code.
Installation
Install this package as a dependency using Composer.
composer require danjones000/object-spy
Usage
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
Implementation notes
This class does not use reflections in its operation. Instead, if uses closures that are bound to the instance or class.
Contributing
Contributions are welcome! To contribute, please familiarize yourself with CONTRIBUTING.md.
Copyright and License
The danjones000/object-spy library is copyright © Dan Jones and licensed for use under the terms of the MIT License (MIT). Please see LICENSE for more information.