Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP函数与变量继承_Php - Fatal编程技术网

PHP函数与变量继承

PHP函数与变量继承,php,Php,有人能帮我理解PHP类中的变量/函数继承吗 我的父类有一个供所有子类使用的函数。但是,每个子类都需要在此函数中使用自己的变量。我想静态地调用子类中的函数。在下面的示例中,显示的是“世界”,而不是子类中的值 有人能解释一下我如何让函数回显子类中的值吗。我应该使用接口吗?这是否与后期静态绑定有关(由于使用5.3.0之前版本的PHP,我无法使用后期静态绑定) 如果您使用的是PHP5.3,则此echo语句将起作用: echo static::$myVar; 但是,由于这对您来说是不可用的,您唯一(很好

有人能帮我理解PHP类中的变量/函数继承吗

我的父类有一个供所有子类使用的函数。但是,每个子类都需要在此函数中使用自己的变量。我想静态地调用子类中的函数。在下面的示例中,显示的是“世界”,而不是子类中的值

有人能解释一下我如何让函数回显子类中的值吗。我应该使用接口吗?这是否与后期静态绑定有关(由于使用5.3.0之前版本的PHP,我无法使用后期静态绑定)


如果您使用的是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