0

我正在尝试访问 PHP 中父类的内容,但由于某种原因,它似乎不想通过。我对 OOP 很陌生,所以如果有任何建议,请告诉我。下面是我的代码:

class baseQuery {
    public static $numbers = "(1, 2, 3, 4, 5, 6, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 32, 39, 50, 52, 72, 109, 110, 850, 1839, 1968, 1969, 1970, 1972, 1973, 2364, 2365, 3009)";
}

class specificQuery extends baseQuery {
    public function __construct() {
        $numbers = $this->numbers;
    }
    public function test() {
        echo $numbers; //fails
    }
}
4

4 回答 4

2

如果要访问静态成员,则需要使用以下语法:

self::$varname

您可以通过使用实际的类名而不是self. 就 php 而言,您的test()方法正在尝试访问一个名为$numbers您尚未声明的变量。如果您不使用$this->orself::语法,PHP 会假定它是一个本地(或者,如果您真的很危险,则是一个全局)变量。

于 2012-05-14T17:14:39.820 回答
1

您应该阅读“后期静态绑定”。基本上,您将使用 static 关键字访问 numbers 属性。

class specificQuery extends baseQuery {
    public function test() {
        echo static::$numbers;
    }
}

我喜欢在 self 上使用 static 因为如果你在扩展原始类的类中设置 $numbers ,它将被访问而不是基类。

于 2012-05-14T17:14:02.437 回答
0

在扩展原始类的第二个类中,您正在设置一个常规变量,您需要将其存储在某个地方。

尝试在第二个类中分配一个新的公共变量,将数字存储给他,然后在函数中显示他。

于 2012-05-14T17:10:06.663 回答
0
class baseQuery {
    public static $numbers = "(1, 2, 3, 4, 5, 6, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 32, 39, 50, 52, 72, 109, 110, 850, 1839, 1968, 1969, 1970, 1972, 1973, 2364, 2365, 3009)";
}
class specificQuery extends baseQuery {
    public function __construct() {}

    public function test() {
        echo self::$numbers; // works :)
    }
}
于 2012-05-14T17:13:46.333 回答