Private Access¶
A small simple library to access private properties of the objects. Actually it’s more an example of mad skillz than a useful tool. No Reflection API calls!
Installation¶
Use composer:
composer require arokettu/private-access --dev
Why --dev
?¶
This library may be used for debugging or with PHP consoles like PsySH. If you are actually using it in some live system, you’re doing something terribly wrong.
Functions¶
These four simple functions can come in handy as helpers for something like PsySH
Note
All functions also work with protected and public visibilities
Class examples:
<?php
class A extends B
{
private const SECRET_CONST = '';
private $secret;
private static $staticSecret;
private function doStuff() {}
private static function doStaticStuff() {}
}
class B
{
private $secret;
private function doStuff() {}
}
$a = new A();
get_private_field
¶
Get value of a private field
<?php
use function Arokettu\Debug\get_private_field;
get_private_field($a, 'secret'); // get $a->A::secret value
get_private_field(A::class, 'staticSecret'); // get A::$staticSecret value
get_private_field([$a, B::class], 'secret'); // get $a->B::$secret value
set_private_field
¶
Set value of a private field
<?php
use function Arokettu\Debug\set_private_field;
set_private_field($a, 'secret', 'new secret'); // set new $a->A::secret value
set_private_field(A::class, 'staticSecret', 'new secret'); // set new A::$staticSecret value
set_private_field([$a, B::class], 'secret', 'new secret'); // set new $a->B::$secret value
call_private_method
¶
Call private method
<?php
use function Arokettu\Debug\call_private_method;
call_private_method($a, 'doStuff', 'whatever'); // call $a->A::doStuff('whatever')
call_private_method(A::class, 'doStaticStuff', 'whatever'); // call A::doStaticStuff('whatever')
call_private_method([$a, B::class], 'doStuff', 'whatever'); // call $a->B::doStuff('whatever')
get_private_const
¶
Get value of a private constant
Note
This function works in all supported PHP versions but is useful only with PHP 7.1+ where constants can be private or protected
<?php
use function Arokettu\Debug\get_private_const;
get_private_const($a, 'SECRET_CONST');
// or
get_private_const(A::class, 'SECRET_CONST');
License¶
The library is available as open source under the terms of the MIT License.