​
Walter Parker <walt...@gmail.com>
​ wrote:​
> ​
Constant may not have been the right word (or idea), but I agree with
Kalle. We should use readonly as the keyword here and not final as the
keyword. We can keep the same scoping rules so the following would work:
>​
​> function randomNumber() {
​>​
  *readonly *$number = mt_rand();
​
​I agree that "readonly" is a better keyword, but we have to points here:
1. "final" is used on some language (Java, C++ I guess);
2. "final" keyword does exists on PHP with a "similar" behaviour;

If we can implements "readonly" is good too, because turn it more implicit.



2017-06-28 15:46 GMT-03:00 David Rodrigues <david.pro...@gmail.com>:

> 2017-06-28 13:59 GMT-03:00 Kalle Sommer Nielsen <ka...@php.net>:
>
>> Hi David
>>
>> 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]
>>
> ​​
>
> ​Not on reality.​ :(
>
> The "final" keyworks make a "local scope" variable value "blocked to
> rewrite" after instantiate it.
> Okay, it sounds like a "const", and it is, but "not as we known it".
>
> While constants are class member (or globals), a final variable is just a
> variable blocked to rewrite, and it could be initialized with a new data
> content every time that the context is called (eg. a function).
>
> For instance (note that the parameter is "final", then I can't modify the
> parameter variable, but it can receives a new value each time that I call
> this function):
>
> function write(final $message) { echo $message; }
> write("Hello");
> write("World");
> // Write "Hello World" on ouput.
>
> Or then:
>
> function randomNumber() {
>   final $number = mt_rand();
>   echo $number;
>
>   // $number = mt_rand_again(); // <-- will not be allowed!
> }
> randomNumber();
> ​ // Write "0.123"
> randomNumber();
> ​ // Write "0.456"
> ​
>
>
>
>>
>> [1] http://php.net/constants
>> [2] https://docs.microsoft.com/en-us/dotnet/csharp/language-refe
>> rence/keywords/readonly
>>
>
> --
> David Rodrigues
>



-- 
David Rodrigues

Reply via email to