Hi!

> So... to be explicit here, you think in this situation:
> 
> class a {
>    public $b {
>       set($x) { $this->b = $x; }
>    }
> }
> 
> $o = new a();
> 
> if(!isset($o->b)) {
>    /* delete files */
> }
> echo (int)isset($o->b);  /* This should return false and not emit any 
> sort of warning/notice? */

isset should return false, since $b is not set value. It should not
produce any warning. Of course (int) would produce 0 then ;)

> I mean specifically, there is no getter defined, therefore the result 
> if isset is indeterminate and while I can see it not causing execution 

No, the result is determinate - it's false. That's the point of isset()
in PHP and that's how it is used in existing code.

> to stop I don't see it being a good idea to not warn the developer that 
> what they've attempted is not correct.  Without a getter, isset() is 
> not a legal call (since the value cannot be retrieved).

isset() should always be legal. This is the way to check if $o->b is legal.


-- 
Stanislav Malyshev, Software Architect
SugarCRM: http://www.sugarcrm.com/
(408)454-6900 ext. 227

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

Reply via email to