> > $person = new Person("Name", 43) { > firstName: "John", > age: 42 > };
Hi! You could achieve similar functionality with a simple user-land method "assign". If you put such a method on a trait, you can use it everywhere. See the example: <?php trait AssignsPropertiesValues { public function assign(...$props): static { foreach ($props as $propName => $propVal) { $this->$propName = $propVal; } return $this; } } class Person { use AssignsPropertiesValues; public function __construct( public string $firstName, public int $age ) { } } class Person2 { use AssignsPropertiesValues; public string $firstName; public int $age; } class Person3 { use AssignsPropertiesValues; public string $firstName { set => \strtoupper($value); } public int $age; } $p1 = new Person('Pig',5)->assign(firstName: 'Peppa', age: 6); $p2 = new Person2()->assign(firstName: 'George', age: 3); $p3 = new Person3()->assign(firstName: 'Danny', age: 7); var_dump($p1, $p2, $p3); https://3v4l.org/F83NO#v8.4.1 Best regards, Erick