<?php
namespace Foo\Bar;
class A
{
}
class B
{
public function __construct($type)
{
$fullType = 'Foo\\Bar\\' . $type;
echo "try to create $fullType\n";
new $fullType;
echo "$fullType created\n";
//$fullType = get_class($type . '::class');
echo "try to create $type::class ($fullType)\n";
$class = A::class;
new $class;
echo "$type::class ($fullType) created\n";
echo "try to create $type\n";
new $type;
echo "$type created\n";
}
}
new A;
new B('A');
try to create Foo\Bar\A
Foo\Bar\A created
try to create A::class (Foo\Bar\A)
A::class (Foo\Bar\A) created
try to create A
Fatal error: Uncaught Error: Class "A" not found in /in/nKqoP:26
Stack trace:
#0 /in/nKqoP(32): Foo\Bar\B->__construct('A')
#1 {main}
thrown in /in/nKqoP on line 26
Process exited with code 255.
try to create Foo\Bar\A
Foo\Bar\A created
try to create A::class (Foo\Bar\A)
A::class (Foo\Bar\A) created
try to create A
Fatal error: Uncaught Error: Class 'A' not found in /in/nKqoP:26
Stack trace:
#0 /in/nKqoP(32): Foo\Bar\B->__construct('A')
#1 {main}
thrown in /in/nKqoP on line 26
Process exited with code 255.
Output for 5.5.0 - 5.5.38, 5.6.0 - 5.6.40
try to create Foo\Bar\A
Foo\Bar\A created
try to create A::class (Foo\Bar\A)
A::class (Foo\Bar\A) created
try to create A
Fatal error: Class 'A' not found in /in/nKqoP on line 26
Process exited with code 255.
Output for 5.4.0 - 5.4.45
Parse error: syntax error, unexpected 'class' (T_CLASS), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in /in/nKqoP on line 21
Process exited with code 255.
Output for 5.3.0 - 5.3.29
Parse error: syntax error, unexpected T_CLASS, expecting T_STRING or T_VARIABLE or '$' in /in/nKqoP on line 21
Process exited with code 255.