<?php
class Foo {
public function bar() {
var_dump(static::A);
}
}
class Baz extends Foo {
const A = 'FooBarBaz';
public function __construct() {
$this->bar();
}
}
new Baz;
<?php
class parentClass {
const MY_CONST = 12;
}
class childClass extends parentClass {
public function getConst() {
return self::MY_CONST;
}
public function getParentConst() {
return parent::MY_CONST;
}
}
class otherChild extends parentClass {
const MY_CONST = 200;
public function getConst() {
return self::MY_CONST;
}
public function getParentConst() {
return parent::MY_CONST;
}
}
<?php
class MyParentClass{
const CONSTANT_1=123;
}
class MyChildClass extends MyParentClass{
public static function x() {
echo parent::CONSTANT_1;
}
}
MyChildClass::x();
class MyParentClass{
const CONSTANT_1=1;
}
class MyChildClass extends MyParentClass{
function __construct(){
echo parent::CONSTANT_1; //here you get access to CONSTANT_1
}
}
new MyChildClass();
或:
class MyParentClass{
const CONSTANT_1=1;
}
class MyChildClass extends MyParentClass{
MyParentClass::CONSTANT_1; // here you you get access to CONSTANT_1 too
}
class Whale
{
const BLOWHOLES = 1;
}
class BlueWhale extends Whale
{
/**
* A method that does absolutely nothing useful.
*/
public function funnyCalculation()
{
return self::BLOWHOLES + 2; // This is the access you are looking for.
}
}
6条答案
按热度按时间ryoqjall1#
我认为你需要像这样访问它:
或者“parent”,它将始终是在父类中建立的值(即,保持常数的不变性):
在父类和子类中,可以用途:
有趣
有一点值得注意的是,你实际上可以覆盖子类中的const值。
vngu2lb82#
你也可以通过 static 键从父方法访问子方法中的常量定义。
wn9m85ua3#
你不一定要使用
parent
,你可以使用self
,它会首先检查class
本身是否有同名的constant
,然后它会尝试访问parents
constant
。因此
self
更加通用,并提供了“覆盖”parents
constant
的可能性,而不是实际覆盖它,因为您仍然可以通过parent::
显式访问它。以下结构:
导致以下结果:
7rfyedvj4#
示例:http://codepad.org/Yqgyc6MH
wqlqzqxt5#
使用parent,例如:
或:
lsmd5eda6#
您需要使用
self
关键字。查看ways to access class constants inside and outside of the class definition的PHP手册。