gpt4 book ai didi

php - setter 和对象

转载 作者:可可西里 更新时间:2023-11-01 12:59:59 25 4
gpt4 key购买 nike

我刚刚将这个方法添加到我的类中:

/**
* @param string|StreamableInterface $body
* @return Message
*/
public function setBody($body) {
$this->body = $body instanceof StreamableInterface ? $body : new StringStream($body, true);
return $this;
}

现在我突然想到,语义会有所不同,具体取决于您向方法传递的是字符串还是对象。

如果你给它一个字符串,它会构造一个新对象,否则它只会创建一个对你提供的对象的引用,这意味着你可以在一种情况下从这个类之外进一步修改那个对象,但不是其他。

这是不好的做法吗?如果传入一个对象,我是否应该创建该对象的完整克隆?我不确定预期的行为是什么。

最佳答案

在我看来,不应克隆流,您应该保持代码原样。我什至会考虑你做了什么最佳实践。如果有人希望对象有自己的独立流,那么他们应该为对象提供自己的流——我会将这个决定留给调用者。

你的方法是我见过的几乎所有类似场景中常用的方法。

关于php - setter 和对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29807302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com