class_name_as_scalar.phpt [plain text]
--TEST--
class name as scalar from ::class keyword
--FILE--
<?php
namespace Foo\Bar {
class One {
const A = self::class;
const B = Two::class;
}
class Two extends One {
public static function run() {
var_dump(self::class); var_dump(static::class); var_dump(parent::class); var_dump(Baz::class); }
}
class Three extends Two {
public static function checkCompileTime(
$one = self::class,
$two = Baz::class,
$three = One::A,
$four = self::B
) {
var_dump($one, $two, $three, $four);
}
}
echo "In NS\n";
var_dump(Moo::CLASS); }
namespace {
use Bee\Bop as Moo,
Foo\Bar\One;
echo "Top\n";
var_dump(One::class); var_dump(Boo::class); var_dump(Moo::CLASS); var_dump(\Moo::Class); $class = One::class; $x = new $class; var_dump($x);
Foo\Bar\Two::run(); echo "Parent\n";
Foo\Bar\Three::run(); echo "Compile Check\n";
Foo\Bar\Three::checkCompileTime();
}
?>
--EXPECTF--
In NS
string(11) "Foo\Bar\Moo"
Top
string(11) "Foo\Bar\One"
string(3) "Boo"
string(7) "Bee\Bop"
string(3) "Moo"
object(Foo\Bar\One)#1 (0) {
}
string(11) "Foo\Bar\Two"
string(11) "Foo\Bar\Two"
string(11) "Foo\Bar\One"
string(11) "Foo\Bar\Baz"
Parent
string(11) "Foo\Bar\Two"
string(13) "Foo\Bar\Three"
string(11) "Foo\Bar\One"
string(11) "Foo\Bar\Baz"
Compile Check
string(13) "Foo\Bar\Three"
string(11) "Foo\Bar\Baz"
string(11) "Foo\Bar\One"
string(11) "Foo\Bar\Two"