<?php
class StringCastable
{
private $data;
public function __constructor($data)
{
$this->data = $data;
}
public function __toString(): string
{
return $this->toString();
}
public function toString(): string
{
return $this->data;
}
}
function testStringCast(string $data)
{
var_dump($data, get_class($data));
}
testStringCast(new StringCastable("speculoos"));
Fatal error: Uncaught TypeError: StringCastable::toString(): Return value must be of type string, null returned in /in/Nd5AX:19
Stack trace:
#0 /in/Nd5AX(14): StringCastable->toString()
#1 /in/Nd5AX(23): StringCastable->__toString()
#2 /in/Nd5AX(28): testStringCast(Object(StringCastable))
#3 {main}
thrown in /in/Nd5AX on line 19
Process exited with code 255.
Output for 7.4.0 - 7.4.33
Fatal error: Uncaught TypeError: Return value of StringCastable::toString() must be of the type string, null returned in /in/Nd5AX:19
Stack trace:
#0 /in/Nd5AX(14): StringCastable->toString()
#1 /in/Nd5AX(23): StringCastable->__toString()
#2 /in/Nd5AX(28): testStringCast(Object(StringCastable))
#3 {main}
thrown in /in/Nd5AX on line 19
Process exited with code 255.
Fatal error: Method StringCastable::__toString() must not throw an exception, caught TypeError: Return value of StringCastable::toString() must be of the type string, null returned in /in/Nd5AX on line 0
Process exited with code 255.
Output for 7.0.0
Fatal error: Method StringCastable::__toString() must not throw an exception in /in/Nd5AX on line 0
Process exited with code 255.