On 09/01/2016 09:12 PM, Fleshgrinder wrote:
> On 9/1/2016 3:49 PM, Silvio Marijić wrote:
>> Hi Andre,
>>
>> Here is RFC https://wiki.php.net/rfc/immutability and you have link to
>> implementation github. Any suggestions and feedback are more then welcome.
>>
>> Best,
>> Silvio
>>
> Hi Silvio,
>
> very nice work you guys did here! :)
indeed! nice to see this going forward
>
> Abstract classes are not mentioned at all in the RFC. However, there is
> a test case from which it is clear that abstract classes cannot be
> immutable. Are there any reasons for this restrictions?
>
> What about array and resource values? Not mentioned in the RFC.
I guess they are not authorized in immutable classes as they are not
immutable themselves, but I think it could be explained
>
> The fact that cloning is not possible should also be extended in the
> RFC. I mean, it's clear to me but maybe not to others. Remember that the
> RFC is the main source of information for the feature (e.g. to generate
> documentation).
agreed, I don't get why it's not possible :/
>
> Why the restrictions that all properties of an immutable class that take
> objects must be immutable too? It's clear why an immutable property must
> contain an immutable class but the inheritance from the class to the
> properties is not consistent with how things work. An immutable class
> might want to contain an internal cache (e.g. flyweight pattern).
>
>   immutable final class Flyweight {
>
>     private static $instances = [];
>
>     public immutable $value;
>
>     private function __construct($value) {
>       $this->value = $value;
>     }
>
>     public static function ENUM_ORD() {
>       if (isset(self::$instances[1]) === false) {
>         self::$instances[1] = new self(1);
>       }
>
>       return self::$instances[1];
>     }
>
>   }
>
>   $o1 = Flyweight::ENUM_ORD();
>   $o2 = Flyweight::ENUM_ORD();
>
>   var_dump($o1 === $o2); // bool(true)
I can understand the usecase, but then, how could  the language ensure
the class is immutable

side note: what about access (read & write) to undefined properties ?
>
> Note that we could add the restriction that an immutable class that
> should be used in a threading context must contain only immutable
> properties in the future when the need arises. However, for now I do not
> see the need to inherit the modifier from the class to its properties
> and I see use cases where the developer wants more control.
>
> The test cases cover the most stuff but not everything and could be
> extended. There are other things with the PR but I will check it out and
> create a PR against your branch with that so you can review it. (Might
> take a while so bare with me.)
>
> The RFC contains several grammatical issues. I could help you with that
> too if you want.
>
> There is a lot of diff noise in the ext/tokenizer/tokenizer_data.c file.
>

-- 
Mathieu Rochette


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

Reply via email to