<?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";
new $fullType;
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
Fatal error: Uncaught TypeError: get_class(): Argument #1 ($object) must be of type object, string given in /in/qMs9i:19
Stack trace:
#0 /in/qMs9i(19): get_class('A::class')
#1 /in/qMs9i(31): Foo\Bar\B->__construct('A')
#2 {main}
thrown in /in/qMs9i on line 19
Process exited with code 255.
try to create Foo\Bar\A
Foo\Bar\A created
Warning: get_class() expects parameter 1 to be object, string given in /in/qMs9i on line 19
try to create A::class ()
Fatal error: Uncaught Error: Class name must be a valid object or a string in /in/qMs9i:21
Stack trace:
#0 /in/qMs9i(31): Foo\Bar\B->__construct('A')
#1 {main}
thrown in /in/qMs9i on line 21
Process exited with code 255.
try to create Foo\Bar\A
Foo\Bar\A created
Warning: get_class() expects parameter 1 to be object, string given in /in/qMs9i on line 19
try to create A::class ()
Fatal error: Class name must be a valid object or a string in /in/qMs9i on line 21
Process exited with code 255.