<?php
trait toArray
{
public function toArray() {
return get_object_vars($this);
}
public function fromArray(array $properties)
{
foreach ($properties as $key => $value) {
if (method_exists($this, 'set' . ucfirst($key))) {
$this->{'set' . ucfirst($key)}($value);
}
}
}
}
interface FooInterface
{
public function toArray();
public function fromArray(array $properties);
}
class Foo implements FooInterface
{
use toArray;
private $bar;
private $baz;
public function setBar($bar) {
$this->bar = $bar;
return $this;
}
public function setBaz($baz) {
$this->baz = $baz;
return $this;
}
}
$foo = new Foo;
$foo->fromArray(['bar' => 'boo', 'baz' => 'test']);
$fooArray = $foo->toArray();
var_export($fooArray);
- Output for 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.40, 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.6
- array (
'bar' => 'boo',
'baz' => 'test',
)
preferences:
243.7 ms | 404 KiB | 376 Q