It was already addressed how using such trivial solution is insufficient, 
please read whole thread

> On 12. Mar 2019, at 22:40, Stanislav Malyshev <smalys...@gmail.com> wrote:
> 
> Hi!
> 
>> While it can be useful, the ability to set an object property which is
>> not part of the class definition can also lead to subtle bugs. Banning
>> this for all objects would be a significant and painful breaking change,
>> so I propose instead the option to mark a particular class with a new
>> keyword, "locked".
> 
> Isn't it just:
> 
> trait Locked {
>  public function __set($name, $value) {
>       throw new RuntimeException("Property $name not declared!");
>  }
>  public function __get($name) {
>       throw new RuntimeException("Property $name not declared!");
>  }
>  public function __unset($name) {
>       throw new RuntimeException("Property $name not declared!");
>  }
> }
> 
> The RFC says:
> 
> While this can be achieved through strategic use of the __set, __get,
> and __unset magic methods, this is long-winded, hard to optimise, and
> interferes with other uses of those methods.
> 
> I don't see how it's "long-winded" - it's just three one-liners, I don't
> see how "interferes with other uses" of these methods (if you want other
> uses, just add code to the method), and as for optimization, I think we
> already have optimization for pre-declared properties, and if you don't
> use any others, it would work just as well.
> 
> 
> -- 
> Stas Malyshev
> smalys...@gmail.com
> 
> -- 
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
> 


--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to