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

Reply via email to