Sure my final properties was first thought, lately in discuccion it turns
into immutable, sealed and final see here
https://marc.info/?l=php-internals&m=146005058530881&w=2
Have you also read about Immutable modifier from last year?
http://marc.info/?t=144766539400001&r=1&w=2 it's exactly about immutable
classes!


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

> 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
>



-- 
pozdrawiam
--
Michał Brzuchalski

Reply via email to