0

私は2つの類似したクラスを持っており、それらには多くの整数変数が含まれています。

あるクラスから別のクラスにすべての変数を追加する方法が必要です。

私のクラスはこれに似ています

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キーワードを使用しない方が良いでしょう。今日、3つのレベルの可視性(public protected private)がそれらを使用しています。

次に、上記のように、継承は、クラスBがAを拡張するときに必要なものですが、それはAですが、より多くの属性または操作またはセンスを備えています。したがって、Bクラスには変数があります。

私が見つけた他のもの:

変数にはキーがないため、forループまたはforaechを使用する機会はありません。

それはかなり間違っています。foreach overオブジェクトのデフォルトの動作は、名前をキー、値を値として、すべてのパブリック属性(publicまたはで定義)をトラバースすることです。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 に答える