我有两个类一个父级,另一个扩展,我需要在扩展类中使用主变量。 例如
class parentClass
{
$this->value = null
function __construct()
{
echo "im parent" ;
}
}
class childClass extends parentClass
{
function sayIt()
{
var_dump($this->value);
}
}
$p = new parentClass ;
$p->value = 500 ;
$c = new childClass ;
$c->sayIt(); // this output null ! i want it to output 500 , how i can do that
感谢
答案 0 :(得分:2)
这不是inheritance的工作方式。 childClass
不会自动连接到父类,它只是继承自parentClass
它只是从父级继承所有公共和受保护的变量/方法。它没有连接到父实例。
如果您输出500,则必须以某种方式将其分配给子类实例:
$c = new childClass ;
$c->value = 500;
$c->sayIt()
如果您需要在所有类和实例之间共享变量,则可以使用static
变量。
答案 1 :(得分:1)
Bad Bad Bad该代码严格用于教育目的我建议您阅读一本关于面向对象编程的基本原理的书
使您的变量静态可以通过子类
访问它class parentClass {
public static $value = null;
function __construct() {
echo "patent called";
}
}
class childClass extends parentClass {
function sayIt() {
var_dump(self::$value);
}
}
$p = new parentClass();
parentClass::$value = 500;
$c = new childClass();
$c->sayIt();
答案 2 :(得分:0)
你对类结构和引用感到困惑。
$p
是父类的实例。
$c
是子类的一个实例。
他们不会分享他们的数据。