Hi David

2017-06-28 18:10 GMT+02:00 David Rodrigues <david.pro...@gmail.com>:
> Hello internals,
>
> Java supports the "final" keyword before a variable to determines that this
> variables never change it reference. If I declare a variable as "final", I
> can only initialize that once, then I could not change it after (but I can
> manipulate the instance, without issues).
>
> There some special reason to PHP doesn't supports things like that?

It seems like what you are looking for here is actually a constant[1].
However constants do not support non scalar types, such as array or
objects, what would really solve it on the objects side of things
would be the introduction of a "readonly" keyword or similar, like
that of C#[2]

> final $number = 123;
> $number = 456; // Error: you change change final variables.
>
> final $object = new stdClass;
> $object->allowed = true; // No error.
>
> This feature make sense because it tells to dev that the variable value
> could not be updated directly (new reference). Which make easy to identify
> when a variable is modifiable or not.
>
> It is valid for a RFC?
>
> - It can uses the "final" keyword;
> - It doesn't a BC;

Anything is usually valid for an RFC, however I think (personally)
that this should rather be an RFC for a readonly keyword if anything

> I too think that a final variable can be useful to make some internal
> improvements on language (but it could be a BC for PHP internals). I mean,
> as the variable could not be modified, then it don't need be a "flexible"
> type internally (I guess that it is a zval, right?).
>
> Reference: https://github.com/kalessil/phpinspectionsea/issues/363
>
> --
> David Rodrigues


[1] http://php.net/constants
[2] 
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/readonly

-- 
regards,

Kalle Sommer Nielsen
ka...@php.net

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to