Hi! > Also, property access never was safe. Consider: > > $obj = new class { > public $foo; > function __construct() { > unset($this->foo); > } > function __get($prop) { > throw new Exception("No $prop for you today!"); > } > }; > var_dump($obj->foo); // exception.
This is different. Your code throws exception purposefully so you intend something to break here - you might as well just written exit(1) and said there's no safe code at all since you could exit at any moment. That's not what I mean. I mean that operation that was previously not prone to fatal errors just because of variable holding some value would now produce such errors - not because the user wrote code to specifically do that but because of hidden properties of the engine. If the engine would by itself insert such code as above into user classes that would be dangerous too but of course it does not. > > isset() checks will continue to work. For some definition of "work" - since it would return false for null values, but null values are actually OK. > It's just about getting a *value*. (and to check whether it's a typed > property, there's Reflection support in the RFC.) You don't propose using Reflection before each variable access I presume. Reflection is useless in runtime scenario. -- Stas Malyshev smalys...@gmail.com -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php