@Fred

Thanks for taking interest. I still need to fully patch reflection
extension for this. We had more important discussions in the past two weeks.

Cheers,
Silvio

2016-09-09 21:46 GMT+02:00 Fred Emmott <f...@fredemmott.co.uk>:

> I see Reflection is still todo;  should there be a similar escape hatch to
> ReflectionMethod::setAccessible()?
>
> This would allow things like: https://gist.github.com/fredemmott/
> 01ad55c0c03c8d7ba62bbd6e9fb23686 (apologies for the hack-like syntax) -
> the ‘every property must be a constructor parameter’ approach in the RFC
> seems like it would rapidly become unwieldy for classes with a large number
> of properties.
>
> Regards,
>  - Fred
>
>
> On Aug 8, 2016, at 3:31 AM, Silvio Marijić <marijic.sil...@gmail.com>
> wrote:
>
>
> 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
>
>
>


-- 
Silvio Marijić
Software Engineer
2e Systems

Reply via email to