Re: [RFC][Vote] Typed Properties
| From: | Thomas Bley | Date: | Wed, 25 May 2016 21:52:08 +0000 |
| Subject: | Re: [RFC][Vote] Typed Properties | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-93540@lists.php.net to get a copy of this message | ||
I'm not seeing a problem here:
class A {
public int $x;
public ?int $y = null;
public int $z = 42;
public ?int $u;
public ?datetime $v;
public datetime $w;
}
$a = new A;
var_dump($a->x); // 0 + notice
var_dump($a->y); // null
var_dump($a->z); // 42
var_dump(isset($a->z)); // true
unset($a->z);
var_dump(isset($a->z)); // false
var_dump($a->z); // 0 + notice
var_dump($a->u); // null + notice
var_dump($a->v); // null + notice
var_dump($a->w); // Fatal error, uninitialized...
var_dump(isset($a->x)); // false
var_dump(isset($a->y)); // false
var_dump(isset($a->u)); // false
var_dump(isset($a->v)); // false
var_dump(isset($a->w)); // false
Regards
Thomas
>> public ?int $y = null;
>> public int $z = 42;
>> public ?int $u;
>> public ?datetime $v;
>> public datetime $w;
>> }
>>
>> $a = new A;
>> var_dump($a->x); // 0 + notice
>> var_dump($a->y); // null
>> var_dump($a->z); // 42
>> unset($a->z);
>> var_dump($a->z); // 0 + notice
>> var_dump($a->u); // null + notice
>> var_dump($a->v); // null + notice
>> var_dump($a->w); // Fatal error, uninitialized...
Fleshgrinder wrote on 25.05.2016 23:38:
> On 5/25/2016 11:35 PM, Thomas Bley wrote:
>> Following "Type safety is the goal of this RFC, not validating objects.", it
>> would be better to do implicit casting for uninitialized properties (whenever
>> implicit casting is possible) or use null for nullable types:
>>
>> class A {
>> public int $x;
>> public ?int $y = null;
>> public int $z = 42;
>> public ?int $u;
>> public ?datetime $v;
>> public datetime $w;
>> }
>>
>> $a = new A;
>> var_dump($a->x); // 0 + notice
>> var_dump($a->y); // null
>> var_dump($a->z); // 42
>> unset($a->z);
>> var_dump($a->z); // 0 + notice
>> var_dump($a->u); // null + notice
>> var_dump($a->v); // null + notice
>> var_dump($a->w); // Fatal error, uninitialized...
>>
>
> This was proposed many times but it renders checks whether something was
> initialized or not completely useless and is not really a solution to
> the problem at hand.
>
> --
> Richard "Fleshgrinder" Fussenegger
>
>