我有两个类似的类,其中包含很多整数变量。
我需要一种方法将所有变量从一个类添加到另一个类。
我的班级与此类似
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
从first
类到second
类的所有变量,我认为我的代码对php
来说太长了。< / p>
$class1->Variable_1 += $class2->Variable_1
/*
.. to 100
*/
没有机会使用for loop
或foraech
,因为变量没有任何键。而且,变量名称不包含任何数字。
有什么建议吗?
答案 0 :(得分:2)
首先,最好不要使用var
关键字。今天有三个级别的可见性(public protected private
)使用它们。
然后,如上所述,继承是你想要的,因为当B类扩展时A它是一个A但具有更多的属性或操作或意义。所以在你的B班中会有你的变量。
我发现的其他事情:
没有机会使用for循环或foraech因为变量没有任何键。
这是非常错误的。 foreach over object的默认行为是遍历所有公共属性(使用public
或var
定义),并将其名称作为键,将值作为值,因此:
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.