@ 2017-07-04T08:48:49Z <?php
interface ArraySerializableInterface {}
class Baz {
private $BazEvent = 'BazEvent';
}
class Bar{
private $event = 'BarEvent';
private $secendClass;
/**
* Constructor.
*/
public function __construct()
{
$this->secendClass = [
new Baz(),
];
}
}
class Foo {
/**
* @var string
*/
private $providerId;
/**
* @var array
*/
private $events;
/**
* Constructor.
*/
public function __construct($providerId)
{
$this->providerId = $providerId;
$this->events = [];
}
/**
* @return string
*/
public function getProviderId()
{
return $this->providerId;
}
/**
* @return array
*/
public function getEvents()
{
return $this->events;
}
/**
* @param EventsInterface $events
*
* @return $this
*/
public function addEvents(EventsInterface $events)
{
$this->events[] = $events;
return $this;
}
}
function entity2array($entity, $recursionDepth = 2) {
$result = array();
$class = new \ReflectionClass(get_class($entity));
foreach ($class->getMethods(\ReflectionMethod::IS_PUBLIC) as $method) {
$methodName = $method->name;
if (strpos($methodName, "get") === 0 && strlen($methodName) > 3) {
$propertyName = lcfirst(substr($methodName, 3));
$value = $method->invoke($entity);
if (is_object($value)) {
if ($recursionDepth > 0) {
$result[$propertyName] = $this->entity2array($value, $recursionDepth - 1);
} else {
$result[$propertyName] = "***"; //stop recursion
}
} else {
$result[$propertyName] = $value;
}
}
}
return $result;
}
$foo = new Foo('crm_newsletter');
var_dump( entity2array($foo));
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Output for 5.6.38 , 7.0.0 - 7.0.33 , 7.1.0 - 7.1.33 , 7.2.0 - 7.2.33 , 7.3.0 - 7.3.33 , 7.4.0 - 7.4.33 , 8.0.0 - 8.0.30 , 8.1.0 - 8.1.28 , 8.2.0 - 8.2.18 , 8.3.0 - 8.3.4 , 8.3.6 array(2) {
["providerId"]=>
string(14) "crm_newsletter"
["events"]=>
array(0) {
}
}
Output for 8.3.5 Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
array(2) {
["providerId"]=>
string(14) "crm_newsletter"
["events"]=>
array(0) {
}
}
preferences:dark mode live preview
197.13 ms | 402 KiB | 245 Q