2012-12-09 66 views
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一切從first類的second類的這些變量,而且我認爲我的代碼是php太長。

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


    /* 
    .. to 100 
    */ 

沒有機會使用for loopforaech因爲變量不具有anykeys。而且,變量名稱不包含任何數字。

有什麼建議嗎?

+0

爲什麼你不在類中創建一個你想傳遞變量的函數。你可以傳遞一個完整的類,並根據需要在函數中處理它? – Luke

+0

繼承,公共屬性,getter方法,......您可以選擇。 – str

+1

另外,爲什麼將它們存儲爲單個變量,爲什麼不將數據存儲在數組中? – Luke

回答

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. 
2

首先,最好不要使用var關鍵字。今天有三個級別的可見性(public protected private)使用它們。

然後,如上所述,繼承是你想要的,因爲當一個類B擴展時它是一個A,但是具有更多的屬性或操作或意義。所以在你的B班裏會有你的變數。

其他的事情,我發現:

沒有機會使用for循環或foraech因爲變量不具有anykeys。

這是相當錯誤的。的foreach超過對象的默認行爲是遍歷所有公共屬性(與publicvar定義的),因爲它們的名稱作爲鍵和它們作爲值的值,因此:

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

將打印所有夫婦屬性名=>屬性值。

如果你想dynamicaly變量添加到一個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 
    } 
} 
相關問題