Re: [RFC] __debug_info()
| From: | Andrea Faulds | Date: | Thu, 23 Jan 2014 16:13:03 +0000 |
| Subject: | Re: [RFC] __debug_info() | ||
| References: | 1 2 3 4 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-71444@lists.php.net to get a copy of this message | ||
On 21/01/14 22:21, Will Fitch wrote:
Because the __toString allows a class to decide how to react when treated like a string. Sure, that could be debug info, but it could be printing a full-blow decorator implementation (e.g. Zend\Form\Form), a number, class name, etc. What Sara is proposing is specific to object debugging.Right. To see the difference better, I suggest looking at what Python does. It has a __string__() magic method and a __repr__() magic method, for string conversion and debug info, respectively. For a date, these result in:
x = datetime.datetime(1996, 02, 17) x datetime.datetime(1996, 2, 17, 0, 0)
str(x) '1996-02-17 00:00:00'
While the str() result is what you want for displaying that date, the repr() result shows you how it was constructed, which is more useful for debugging. For another example, see what Python strings do here:repr(x) 'datetime.datetime(1996, 2, 17, 0, 0)'
line 2n = "line 1\nline 2" print n line 1
The first one's might not be very useful for debugging, because it outputs control characters raw. The debug output version, however, is much better for this. -- Andrea Faulds http://ajf.me/print repr(n) 'line 1\nline 2'