Başka bir nesneden stdClass nesnesine özellikler ekle

4 Cevap php

Ben aşağıdakileri yapabiliyor olmak istiyorum:

$obj = new stdClass;
$obj->status = "success";

$obj2 = new stdClass;
$obj2->message = "OK";

Nasıl ben $ nesne2 özelliklerini, örneğin içerdiği böylece obj $ uzatabilirsiniz:

$obj->status //"success"

$obj->message // "OK"

Ben, bir dizi kullanmak diziye tüm özellikler ekleyebilir ve ardından nesne bu geri döküm biliyorum, ama daha zarif bir şekilde, böyle bir şey var:

($ obj, $ nesne2) uzanır; / / $ Nesne2 dan $ obj Tüm özellikleri ekler

Teşekkürler!

4 Cevap

Bu bunu yapmak istemedim yolu onlar çizgisinde daha fazla ....

$extended = (object) array_merge((array)$obj, (array)$obj2);

Ancak ben bu özelliklerini üzerinde yineleme zorunda biraz daha iyi olacağını düşünüyorum.

Nesne stdClass örneği ise (sizin durumda bulunuyor) sadece gibi bir nesne uzatabilirsiniz ...

$obj = new stdClass;
$obj->status = "success";

$obj2 = new stdClass;
$obj2->message = "OK";

$obj->message = $message;
$obj->subject = $subject;

.... Ve istediğiniz kadar çok.

O yoluyla yineleme, get_object_vars() stdClass nesne birinde kullanmak, ve diğer ekleyebilirsiniz olabilir:

function extend($obj, $obj2) {
    $vars = get_object_vars($obj2);
    foreach ($vars as $var => $value) {
        $obj->$var = $value;
    }
    return $obj;
}

Emin değilim, sizi daha zarif sakıncası gördükleri ederseniz.

Edit: Eğer aynı yerde aslında storing onlar hakkında cimri değilseniz, this answer to a very similar question bakabilirsiniz.