I think this is a great case study that could lead to some improvements in the 
process of fixing bugs in PHP:

http://bugs.php.net/bug.php?id=45743

A potential bug was reported on property_exists() that it won't report 
inaccessible properties in the scope.
The problem is this was, in fact, the intended behavior, and despite everything 
saying the function works correctly, everything around it was changed in order 
to agree with the new behavior for no good reason that I can see:

1) A test existed that specifically tested propert_exists() respects visibility 
of the property from the call scope. So for this 'bugfix' to pass tests, the 
*test was simply changed*. 

2) The documentation specifically said the function respects visibility of the 
property, so for this 'bugfix' to agree with documentation, the *documentation 
was changed*. 

3) The use case for this function required the existing behavior (i.e. can you 
safely call property $x from the current scope with no warning?), and that 
*ignored* when the behavior was changed. We already have Reflection classes for 
inquiring protected/private properties of a class from any scope.

So, what happened here?

Stan Vass

Reply via email to