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

Reply via email to