将类中的变量添加到另一个类似的类中

时间:2012-12-09 16:44:28

标签: php

我有两个类似的类,其中包含很多整数变量。

我需要一种方法将所有变量从一个类添加到另一个类。

我的班级与此类似

class statistics{

var $Variable_1
var $Variable_2
var $Variable_3
var $Variable_4
var $Variable_5
var $Variable_6
var $Variable_7
var $Variable_8
var $Variable_9
var $Variable_10

/* 
.. to 100 
*/

}

我需要的是ADDfirst类到second类的所有变量,我认为我的代码对php来说太长了。< / p>

$class1->Variable_1 += $class2->Variable_1


    /* 
    .. to 100 
    */

没有机会使用for loopforaech,因为变量没有任何键。而且,变量名称不包含任何数字。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

首先,最好不要使用var关键字。今天有三个级别的可见性(public protected private)使用它们。

然后,如上所述,继承是你想要的,因为当B类扩展时A它是一个A但具有更多的属性或操作或意义。所以在你的B班中会有你的变量。

我发现的其他事情:

  

没有机会使用for循环或foraech因为变量没有任何键。

这是非常错误的。 foreach over object的默认行为是遍历所有公共属性(使用publicvar定义),并将其名称作为键,将值作为值,因此:

foreach(new class1() as $key=>$value){
     echo $key.'=>'.$value;
}

将打印所有情侣属性名称=&gt;属性值。

如果你想将动态变量添加到php对象,我认为只需使用$yourObject->yourAttribute = 42;即可 如果你不能,我很确定你可以使用__set和__get魔术方法来创建这种行为:

class class2{
    public function __set($name,$value){
       $this->$name = $value;//will create a public attribute with $name as name
    }
}

答案 1 :(得分:0)

你是说这个?

class statistics{

    var $Variable_1;
    var $Variable_2;
    var $Variable_3;
    var $Variable_4;
    var $Variable_5;
    var $Variable_6;
    var $Variable_7;
    var $Variable_8;
    var $Variable_9;
    var $Variable_10;

}

$class1 = new statistics();
$class2 = new statistics();

$class1->Variable_1 = 5;
$class2->Variable_1 = 2;

$object_vars = get_object_vars($class1);
foreach ($object_vars as $name => $value) {
    $class2->$name += $value;
}

echo($class2->Variable_1); //result in 7.