ID: 37537 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] -Status: Verified +Status: Closed Bug Type: Documentation problem Operating System: Any PHP Version: 5.2.0 New Comment:
This bug has been fixed in the documentation's XML sources. Since the online and downloadable versions of the documentation need some time to get updated, we would like to ask you to be a bit patient. Thank you for the report, and for helping us make our documentation better. "Since PHP 5.2.0, __toString() is called in any string context (e.g. in printf() with %s modifier) but not in other types contexts (e.g. with %d modifier)." Previous Comments: ------------------------------------------------------------------------ [2007-06-20 19:05:15] [EMAIL PROTECTED] See also bug#41750 ------------------------------------------------------------------------ [2006-05-29 12:45:28] [EMAIL PROTECTED] I don't think it's *that* clear. Consider that when you pass a "string" to %d guess what -> it works, the string is converted to an int. But in case of an object, it does not work this way automatically. If you would write (string)$obj it again would work. I don't consider this as clear as blue sky. :) ------------------------------------------------------------------------ [2006-05-29 11:52:53] [EMAIL PROTECTED] No you shouldn't. IMO it's quite clear that __toString wouldn't be called with %i or %e or anything else than %s. But I guess there is no harm in documenting that too.. ------------------------------------------------------------------------ [2006-05-29 06:01:08] [EMAIL PROTECTED] I had a small conversation with the autor on internals@ and it is very important, because you gave the printf example, that __toString() will only be called if an stirng modified %s is encountered. If it's %d for integer, __toString() is not called. This may or may not be expected, but it's the current implementation. Should I file another report for it? ------------------------------------------------------------------------ [2006-05-26 12:13:46] [EMAIL PROTECTED] http://php.net/oop5.magic#language.oop5.magic.tostring needs an updated before 5.2.0. #1 Can't throw exceptions anymore #2 Is called 'wherever it's appropriate' (e. printf("__toString: %s", $obj)) If language.exceptions will be updated to note where exceptions can't be thrown it'll need to note lot more then just __toString() ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/37537 -- Edit this bug report at http://bugs.php.net/?id=37537&edit=1
