<?php
declare(strict_types=1);
class Foo
{
public int $baz {
set (int|string|stdClass $value) {
if (is_int($value)) {
$this->baz = $value;
} else {
if ($value instanceof stdClass
&& property_exists($value, 'baz')
&& is_int($value->baz)
) {
$this->baz = $value->baz;
} else {
if (is_numeric($value)) {
$this->baz = (int)$value;
} else {
throw new InvalidArgumentException('Invalid value');
}
}
}
}
}
}
$obj = new stdClass();
$obj->baz = 123;
$foo = new Foo();
$foo->baz = $obj;
var_dump($obj);