Hello Internals,
during last PHPDay in Verona I discussed this topic with some of
you and it was suggested to me to send an email here.

Here is an example to describe my problem. Imagine a simple
DTO like this:

class MyDTO{
    public ?int $propA;
    public ?int $propB;
}

Imagine that a Form processor or a generic mapper fill some of
these fields with a null value:

$dto = new MyDTO();
$dto->propA = null;

Sometimes we use DTOs to handle PATCH requests and not all
the properties are mapped with a value. In a scenario like this,
"null" is often a valid value.

At this point, I need a way to find if a property was initialized or
not but unfortunately "isset" is not a solution. When I write:

echo isset($dto->propA) ? 'init' : 'not-init';

I get "not-init" since isset returns true only if the variable is set
and different from null.

Full example: https://3v4l.org/4cCj0

Is the language missing a clean way to check if a property is
initialized or not? Is there any solution to this problem?

The only alternative is using reflection but I need to pass the
property name as a string losing static analysis.
Proposing a new language syntax like
"is_initialized($dto->propA)" can be an interesting solution?

Thank you in advance.

Luigi Cardamone
Backend developer
Italy

Reply via email to