PHP函数与变量继承
有人能帮我理解PHP类中的变量/函数继承吗 我的父类有一个供所有子类使用的函数。但是,每个子类都需要在此函数中使用自己的变量。我想静态地调用子类中的函数。在下面的示例中,显示的是“世界”,而不是子类中的值 有人能解释一下我如何让函数回显子类中的值吗。我应该使用接口吗?这是否与后期静态绑定有关(由于使用5.3.0之前版本的PHP,我无法使用后期静态绑定)PHP函数与变量继承,php,Php,有人能帮我理解PHP类中的变量/函数继承吗 我的父类有一个供所有子类使用的函数。但是,每个子类都需要在此函数中使用自己的变量。我想静态地调用子类中的函数。在下面的示例中,显示的是“世界”,而不是子类中的值 有人能解释一下我如何让函数回显子类中的值吗。我应该使用接口吗?这是否与后期静态绑定有关(由于使用5.3.0之前版本的PHP,我无法使用后期静态绑定) 如果您使用的是PHP5.3,则此echo语句将起作用: echo static::$myVar; 但是,由于这对您来说是不可用的,您唯一(很好
如果您使用的是PHP5.3,则此echo语句将起作用:
echo static::$myVar;
但是,由于这对您来说是不可用的,您唯一(很好)的选择是使
hello()
函数不是静态的。是的,您不能这样做。static$myVar
的声明不会以任何方式相互作用,正是因为它们是静态的,是的,如果你有5.3.0,你可以绕过它,但是你没有,所以你不能
我的建议是只使用非静态变量和方法
我想调用
子类是静态的
这真的会让你陷入麻烦,在一天结束之前让你发疯^^^(可能已经有了)
我明确建议使用尽可能少的“static
”属性/方法,尤其是当您尝试使用继承时,至少在PHP<5.3时
由于PHP5.3是一个非常新的版本,在几个月之前,它可能无法在您的托管服务上使用……您可以这样做:
class myParent
{
var $myVar = "world";
function hello()
{
echo $this->myVar."\n";
}
}
class myFirstChild extends myParent
{
var $myVar = "earth";
}
class mySecondChild extends myParent
{
var $myVar = "planet";
}
$first = new myFirstChild();
$first->hello();
$second = new mySecondChild();
$second->hello();
此代码打印
earth
planet
接口只是定义了需要定义的函数,它不适用于这样的东西。后期静态绑定是您想要的,但正如您所说的,您不能使用它。你需要这种行为到底是为了什么?可能有更好的方法来实现它。我决定在子函数的静态函数中创建一个“self”实例,然后将变量存储为非静态变量。
earth
planet