UNPKG

manual-php

Version:
102 lines (80 loc) 1.79 kB
# 类常量 可以把在当前类中始终保持不变的值定义为常量。在定义和使用常量的时候不需要使用美元符号 `$` 。常量的值必须是一个常数。可以用一个变量来动态调用类。但该变量的值不能为关键字(如 `self` , `parent` 或 `static` )。 ```php <?php define('QUX', tmpfile()); class Foo { /** * Just a test constant. * * @var int */ public const FOO = 2 + 3; /** * Just a test constant. * * @var string */ public const BAR = <<<EOT bar EOT; /** * Just a test constant. * * @var array */ public const BAZ = [true, false]; /** * Just a test constant. * * @var resource */ public const QUX = QUX; } var_dump(Foo::FOO); // int(5) $foo = new Foo(); var_dump($foo::FOO); // int(5) $foo = 'Foo'; var_dump($foo::BAR); // string(3) "bar" $foo = 'Foo'; $foo = new $foo; var_dump($foo::BAZ); // array(2) { [0]=> bool(true) [1]=> bool(false) } $foo = new Foo(); $foo = new $foo; var_dump($foo::QUX); // resource(4) of type (stream) ``` 类常量与常量不同的是,类常量可以被子类重写。 ```php <?php class Foo { /** * Just a test constant. * * @var string */ public const CONSTANT = 'foo'; } class Bar extends Foo { /** * Override the parent constant. * * @var string */ public const CONSTANT = 'bar'; } class Baz extends Foo { /** * Override the parent constant. * * @var string */ public const CONSTANT = 'baz'; } var_dump(Foo::CONSTANT); // string(3) "foo" var_dump(Bar::CONSTANT); // string(3) "bar" var_dump(Baz::CONSTANT); // string(3) "baz" ```