Can anyone explain me why function like print_r is not aware of object's read_property handler?
Because it's a debug function with limited functionality. It's not supposed to be means to operate real objects in real contexts with full OO capabilities.
What's the purpose of printing hash instead of using object's read_property standard handler or hook?
The purpose is to display the contents of the hash, of course :) It doesn't fit many other uses, but that's debug function, it doesn't have to.
When read_property hook is used then , and when it's ignored?
It's used every time the property is accessed in the normal way, in the context of real execution and not in the debug functions.
What read_property handler hook should do , if it's ignored in functions like print_r?
See above.
--
Stanislav Malyshev, Zend Products Engineer
stas@zend.com http://www.zend.com/