在php文档中说:
范围解析运营商(也称为Paamayim Nekudotayim)或 更简单的术语,双冒号,是一个允许访问的标记 静态,常量和重写属性或类的方法。
当我尝试访问重写(非静态)父属性时出现错误:
class foo
{
public $bar = 'foobar';
}
class baz extends foo
{
public $bar = 'bazbar';
public function get_bar()
{
echo parent::$bar; //Fatal error: Access to undeclared static property: foo::$bar
}
}
$baz = new baz;
$baz->get_bar();
答案 0 :(得分:1)
Fisrt,将::
与静态属性一起使用,而不是实例属性
其次,尽管你可以使用Reflection(参见下面的代码),但我没有看到任何访问父实例属性的点,polymorphism
用于。{/ p>
class foo
{
public $bar='foobar';
}
class bar extends foo
{
public $bar='bazbar';
function get_bar()
{
$thisClass = new ReflectionClass($this);
$parentClass = $thisClass->getParentClass();
$props = $parentClass->getDefaultProperties();
return $props['bar'];
}
}
$b = new bar();
echo $b->get_bar(); // foobar
答案 1 :(得分:0)
class foo
{
public $bar = 'foobar';
}
制作$ bar静态变量。 您可以使用解析运算符(::)
访问静态成员变量,函数