Как правильно создать объект с полями на основе GET параметров соблюдая типы?
Есть класс с некими свойствами. Их много. Ожидается, что типы будут различные и строковые и целые и булево и т.д.
class TestClass {
/***
* @var int id .....Описание
*/
public $nodeId;
/***
* @var string .....Описание
*/
public $type;
/***
* @var bool .....Описание
*/
public $isComponent = false;
// Ещё много
// много
// других свойств
public static function createFromRequestParams(string $requestParams): self {
$testClass = new TestClass;
foreach($requestParams as $key => $value)
$testClass->{$key} = $value;
$testClass->nodeId = (int)$testClass->nodeId;
$testClass->type = (string)$testClass->type;
$testClass->isComponent = (bool)$testClass->isComponent;
return $testClass;
}
}
Будем считать, что $requestParams - это уже массив ключ => значение параметров из GET
Как на основе этих GET параметров создать экземпляр этого класса так, чтобы все необходимые типы соблюдались? То есть сейчас, если в цикле перебирать значения, то всё будет строковые.
Пока всё что пришло в голову - вручную все поля конвертировать.
Еще можно рефлексию использовать - но это черезчур.
В Java есть специальные утилиты преобразования Json в объекты классов. А тут можно так же сделать как-то в автоматизированном режиме?