Как правильно создать объект с полями на основе 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 в объекты классов. А тут можно так же сделать как-то в автоматизированном режиме?


Ответы (0 шт):