ID: 30379 Updated by: [EMAIL PROTECTED] Reported By: hans at nyphp dot com Status: Bogus Bug Type: Documentation problem Operating System: Irrelevant PHP Version: Irrelevant New Comment:
Yep, we have not rebuilt the manual yet. It should appear in the next couple of days. Previous Comments: ------------------------------------------------------------------------ [2004-10-11 15:58:59] hans at nyphp dot com Thanks Aidan. Please note, however, that this page: http://www.php.net/manual/en/language.oop5.magic.php Is empty. And thanks for changing the example to getMessage(). I think depending on toString for examples can cause confusion for the reasons you mention. Thanks again, H ------------------------------------------------------------------------ [2004-10-11 08:12:22] [EMAIL PROTECTED] __toString has complicated (somewhat confusing) behaviour. echo $e; // calls __toString echo 'text', $e; // calls __toString echo 'text'. $e; // doesn't call __toString echo (string) $e; // doesn't call __toString This is documented on the __toString page: http://www.php.net/manual/en/language.oop5.magic.php This behaviour may change in PHP 5.1 Also note: I've updated the exceptions page to call the getMessage method, as it's more appropriate. ------------------------------------------------------------------------ [2004-10-10 18:21:02] hans at nyphp dot com While the _toString() should be called, in PHP 5.0.2 echoing an object, $e of class Exception, doesn't always call the _toString() method. So perhaps this is more than a documentation problem. For example, given this catch{} block: catch( Exception $e ) { $ref = new ReflectionObject($e); echo var_export($ref->getMethods(),1); echo "My Error: ".$e; } This outputs (shortended form): array ( ... 8 => class ReflectionMethod { public $name = '__toString'; public $class = 'Exception'; }, ) My Error: Object id #3 H ------------------------------------------------------------------------ [2004-10-10 09:40:40] [EMAIL PROTECTED] `echo $e` will call the exception classes __toString method. This will show more information than just getMessage(). This isn't a mistake. However, the docs are not very good - I'll have a look at them today. ------------------------------------------------------------------------ [2004-10-10 06:33:43] hans at nyphp dot com Description: ------------ On the page that gives examples of how to use Exceptions: http://www.php.net/manual/en/language.oop5.exceptions.php The usage of catch() is incorrect in the examples. This code: catch (Exception $e) { echo "Caught exception: ", $e, "\n"; } Would echo something like: Caught exception: Object id #3 I cannot believe this is the desired output. This code: catch (Exception $e) { echo "Caught exception: ", $e->getMessage(), "\n"; } Would provide the expected output: Caught exception: Always throw this error In other words, all exception code examples with echo statements of $e should contain $e->getMessage() rather than just echoing $e. Hans ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=30379&edit=1