class mystruct {
public $a, $b, $c;
function __construct($a, $b, $c) {
$this->a = $a;
$this->b = $b;
$this->c = $c;
}
}class struct {
static public function create() {
$obj = new static;
$keys = array_keys((array)$obj);
foreach (func_get_args() as $k => $v) $obj->{$keys[$k]} = $v;
return $obj;
}
}
static public function create() {
$obj = new static;
$keys = array_keys((array)$obj);
foreach (func_get_args() as $k => $v) $obj->{$keys[$k]} = $v;
return $obj;
}
}
Para versiones anteriores de php podemos usar el constructor:
class struct {
static function __construct() {
$keys = array_keys((array)$obj);
foreach (func_get_args() as $k => $v) $this->{$keys[$k]} = $v;
return $this;
}
}
static function __construct() {
$keys = array_keys((array)$obj);
foreach (func_get_args() as $k => $v) $this->{$keys[$k]} = $v;
return $this;
}
}
Con lo que podríamos hacer lo siguiente:
class mystruct extends struct { public $a, $b, $c; }
mystruct::create(1, 2, 3);
onew mystruct(1, 2, 3);