Btw, I was not aware that there was already conversation on immutable
classes.

2016-08-08 14:31 GMT+02:00 Silvio Marijić <marijic.sil...@gmail.com>:

> I see your standpoint, but I think it could cause confusion because of
> final classes. I think "immutable" is more suited here.
> What I try to achieve is something similar like case classes in Scala.
>
> Best regards,
>
> 2016-08-08 13:16 GMT+02:00 Michał Brzuchalski <mic...@brzuchalski.com>:
>
>> Hi Silvio,
>>
>> Look into my talk about final properties https://marc.info/?
>> t=145979255800003&r=1&w=2 maybe there would be something usefull.
>> There is also talk about mutable and immutable properties and other class
>> modifiers also about var and val.
>> I'm not sure that it should be class midifier rather than proprty
>> modifier keyword.
>>
>> regards,
>> --
>> Michał Brzuchalski
>>
>> 2016-08-08 12:31 GMT+02:00 Silvio Marijić <marijic.sil...@gmail.com>:
>>
>>> Hi,
>>>
>>> I would need your help with one idea. I'm working on one RFC that I'm
>>> would
>>> like to submit. Idea is that after you initialize object eg. after
>>> constructor returns, object would be locked, and you wouldn't be able to
>>> change properties on that object anymore. It would like this:
>>>
>>> <?php
>>>
>>> immutable class Email {
>>> >      public $email;
>>> >      public function __construct($email){
>>> >          $this->email = $email;
>>> >      }
>>> > }
>>> > $email = new Email("exam...@email.com");
>>>
>>>
>>>
>>> After instance of class is created, object is "frozen" so call like this
>>>
>>> $email->email = "n...@email.com";
>>>
>>>
>>> Would result in error.
>>>
>>> I have already implementation up to certain degree, but I need one advice
>>> from more experienced developers. Where is the place where I could put
>>> logic to lock object after the constructor has finished? Maybe in zend vm
>>> on ZEND_NEW token?
>>>
>>> Some constraints are needed:
>>>
>>>    1. Child class that extends immutable class must be defined as
>>> immutable
>>>    also.
>>>    2. If property on immutable class contains object, it must be instance
>>>    of immutable class.
>>>    3. You can not have immutability per property, it either whole class
>>> or
>>>    none.
>>>
>>> Thank you all in advance.
>>>
>>> --
>>> Silvio Marijić
>>> Software Engineer
>>> 2e Systems
>>>
>>
>>
>>
>> --
>> pozdrawiam
>> --
>> Michał Brzuchalski
>>
>
>
>
> --
> Silvio Marijić
> Software Engineer
> 2e Systems
>



-- 
Silvio Marijić
Software Engineer
2e Systems

Reply via email to