3v4l.org

run code in 500+ PHP versions simultaneously
<?php declare(strict_types=1); class SomeClass { public function __construct( public readonly string $status ) { } public static function create(array|stdClass $params): self { $properties = get_class_vars(self::class); return new self(...array_intersect_key((array) $params, $properties)); } } var_dump(SomeClass::create((object) ['status' => 'pending', 'foo' => 'bar']));
Output for 8.1.19, 8.3.5
object(SomeClass)#2 (1) { ["status"]=> string(7) "pending" }

preferences:
41.89 ms | 492 KiB | 3 Q