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

/* 
.. to 100 
*/

}

我需要的只是从类到类ADD的所有这些变量,而且我认为我的代码对于.firstsecondphp

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


    /* 
    .. to 100 
    */

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

有什么建议么 ?

4

2 回答 2

2

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

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

我发现的其他事情:

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

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

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

将打印所有情侣属性名称 => 属性值。

如果您想将动态变量添加到 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
    }
}
于 2012-12-09T16:58:44.007 回答
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.
于 2012-12-09T17:03:01.553 回答