mirror of
https://github.com/php/php-src.git
synced 2024-11-27 11:53:33 +08:00
fbe30592d6
From now on, we always display the given object's type instead of just reporting "object". Additionally, make the format of return type errors match the format of argument errors. Closes GH-5625
70 lines
918 B
PHP
70 lines
918 B
PHP
--TEST--
|
|
Bug #26166 (__toString() crash when no values returned)
|
|
--FILE--
|
|
<?php
|
|
|
|
class Foo
|
|
{
|
|
function __toString()
|
|
{
|
|
return "Hello World!\n";
|
|
}
|
|
}
|
|
|
|
class Bar
|
|
{
|
|
private $obj;
|
|
|
|
function __construct()
|
|
{
|
|
$this->obj = new Foo();
|
|
}
|
|
|
|
function __toString()
|
|
{
|
|
return $this->obj->__toString();
|
|
}
|
|
}
|
|
|
|
$o = new Bar;
|
|
echo $o;
|
|
|
|
echo "===NONE===\n";
|
|
|
|
class NoneTest
|
|
{
|
|
function __toString() {
|
|
}
|
|
}
|
|
|
|
$o = new NoneTest;
|
|
try {
|
|
echo $o;
|
|
} catch (Error $e) {
|
|
echo $e->getMessage(), "\n";
|
|
}
|
|
|
|
echo "===THROW===\n";
|
|
|
|
class ErrorTest
|
|
{
|
|
function __toString() {
|
|
throw new Exception("This is an error!");
|
|
}
|
|
}
|
|
|
|
$o = new ErrorTest;
|
|
try {
|
|
echo $o;
|
|
} catch (Exception $e) {
|
|
echo $e->getMessage(), "\n";
|
|
}
|
|
|
|
?>
|
|
--EXPECT--
|
|
Hello World!
|
|
===NONE===
|
|
NoneTest::__toString(): Return value must be of type string, none returned
|
|
===THROW===
|
|
This is an error!
|