试图理解PHP OOP

时间:2014-01-11 22:26:14

标签: php

我想知道为什么以下代码不会打印出任何内容。我正在尝试从父类中的方法访问Bar::$some_var。其中Bar::$some_var在其构造函数中定义。

我尝试在self::$some_var中使用static::$some_varFoo::hello(),但都没有效果。我是否必须$some_var static

class Foo {

    private $some_var;

    public function __construct() {
        $this->some_var = 5;
    }

    public function hello() {
        print $this->some_var;
    }
}

class Bar extends Foo {

    public function __construct() {
        $this->some_var = 10;
    }
}

$bar = new Bar();
$bar->hello();

提前致谢。

3 个答案:

答案 0 :(得分:5)

private使成员变量在类之外不可用。您需要使用protected来允许扩展类访问该变量。

protected $some_var;

请参阅Visibility

答案 1 :(得分:1)

如果您希望您的子类访问它,您的类变量不能是私有的。 尝试保护,它应该工作!

答案 2 :(得分:0)

  • :: operator用于访问类项(常量,静态 变量,静态方法)
  • - > operator用于访问对象项(非静态属性和方法)

无论如何,在您的代码中,问题是$ some_var的可见性。它必须几乎受到保护,公众也将工作