Re: [RFC][Vote] Typed Properties
| From: | Fleshgrinder | Date: | Wed, 25 May 2016 19:40:28 +0000 |
| Subject: | Re: [RFC][Vote] Typed Properties | ||
| References: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-93526@lists.php.net to get a copy of this message | ||
On 5/25/2016 9:13 PM, Niklas Keller wrote:
> 2016-05-25 20:39 GMT+02:00 Fleshgrinder <php@fleshgrinder.com>:
>
>> In my opinion it should simply vanish along with its definition. I mean,
>>
>
> Usually, yes. But suddenly
Attachment: [application/pgp-signature] OpenPGP digital signature signature.asc
private Type $foo isn't
> reliable anymore if
> unset is supported for typed properties, because the following would just
> remove all type info / enforcement:
>
> $backup = $this->foo;
> unset($this->foo);
> $this->foo = $backup;
>
> Unset can reset it to the default value, but wiping type information is
> probably
> not an option here.
>
> Regards, Niklas
>
I had to check because I never tried this once in my life (why would one
need it anyways) ...
class A {
private $foo = "foo";
function get() {
return $this->foo;
}
function unset() {
unset($this->foo);
}
}
$a = new A;
echo $a->get(); // foo
$a->unset();
echo $a->get(); // Notice: Undefined property: A::$foo
$a->foo = "foo";
// Fatal error: Uncaught Error: Cannot access private property A::$foo
In other words, unset is not really unset already!
QED: Preserving *all* attributes of a property is the only consistent
way. However, preserving its value is not.
I do not think that there is a problem together with the typed
properties, nullability, and unset simply because the property is not
explicitly assigned null by unset, it is being undefined.
I think internally null is actually assigned and it's not IS_UNDEF,
right? However, from a userland perspective it is definitely not defined
anymore and access should (as it does) result in an error (in our case
E_INFO) plus null is being returned but only because undefined does not
exist in PHP userland.
I did not read up on all the history yet but I am on it ...
--
Richard "Fleshgrinder" Fussenegger
Attachment: [application/pgp-signature] OpenPGP digital signature signature.asc