父类的变量给所有孩子

时间:2012-08-26 11:58:29

标签: php oop

我有类似的类结构:

class general {

    private $var;

    function set_val( $val ) {
        $this->var = $val;
    }

    function get_val() {
        return $this->var;
    }

}


class A extends general {

    function __construct( $val ) {
        parent::set_val( $val );

    }

    ....

}


class B extends general {

    ....

}

和相应的主脚本是这样的:

<?php
$a = new A( "Apple" );
$b = new B();

echo "A: " . $a->get_val();
echo "B: " . $b->get_val();

输出:

A: Apple
B:

现在的问题是A和B的所有实例都访问它们自己的变量$ var of parent class general,其中所有$ var彼此独立。

是否有一种方法可以在父类中设置变量$ var一般一次然后可以自动对所有类进行设置,这些是

背景:我想在通用类中加载具有语言相关值的变量。然后,这些变量应该可供所有子类使用。

3 个答案:

答案 0 :(得分:1)

不会在不同对象之间自动共享数据。您可以使用静态访问的static类属性,该属性本质上是一个全局变量。这通常是一个坏主意,因为对象提供的封装通常被认为是一件好事。

答案 1 :(得分:0)

理想情况下,如果在您的代码中您希望对象共享公共数据,最好将它们分离到另一个对象中并在代码中使用该对象。

示例:与语言无关的数据可以进入单独的类,该类迎合语言无关的功能。但是,如果由于某些约束只需要使用一个类,那么唯一的选择就是将它们作为类的静态成员。

答案 2 :(得分:0)

将$ var声明为protected而不是private。 私有变量仅适用于声明它们的类,而不适用于子类。 受保护的变量既可用于定义类,也可用于扩展父类的所有类。