在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/PHP/ 在使用php編寫gateway代理請(qǐng)求的時(shí)候,如果要改變請(qǐng)求,為什么要使用clo

在使用php編寫gateway代理請(qǐng)求的時(shí)候,如果要改變請(qǐng)求,為什么要使用clone

在使用php編寫gateway代理請(qǐng)求的時(shí)候,如果要改變請(qǐng)求,為什么要使用clone,但是clone只能對(duì)于屬性進(jìn)行clone,對(duì)象是潛拷貝啊。
我知道在psr7中定義的是HTTP 請(qǐng)求和響應(yīng)必須要被視為無(wú)法修改的,但是因?yàn)橛上氲絚lone是對(duì)于對(duì)象的屬性是深拷貝,但是對(duì)象中的對(duì)象是潛拷貝,有點(diǎn)想不通,求大神解惑。

回答
編輯回答
離魂曲

PSR7里能修改的都給了對(duì)應(yīng)的接口withXXXX,作為庫(kù)的使用者是不需要clone的,例如guzzled的實(shí)現(xiàn)已經(jīng)幫你clone了,需要更新的屬性也給你更新了:

public function withUri(UriInterface $uri, $preserveHost = false)
{
    if ($uri === $this->uri) {
        return $this;
    }
    $new = clone $this;
    $new->uri = $uri;
    if (!$preserveHost) {
        $new->updateHostFromUri();
    }
    return $new;
}

你自己clone然后去直接改屬性(正常都是private,你也改不了)是不能保證不可變的,但是你只用withXXX這些方法,就可以保證不可變。

2018年1月5日 18:51