我最近需要使用
我看到这里正在发生的事情。但我不明白为什么一个类会像这样实现。
有什么好处吗?为什么要以这种方式限制开发人员呢?
Slim\Http\Message
和 Slim\Http\Request
来获取用户发布的数据。
我在方法 withBody()
中注意到了一个问题,它返回对象的克隆而不是 $this
。
这给我带来了一些麻烦,因为我不能让我的应用程序正常工作,直到我将 $request->withBody(...)
分配给一个变量($request
),然后在我的脚本中继续使用该新变量。
我有一个模拟示例来解释(请参见代码中的注释);
class Request {
protected $body;
public function addBody($body) {
$clone = clone $this;
$clone->body = $body;
return $clone;
}
public function getBody() {
return $this->body;
}
}
$request = new Request;
// this will return NULL
$request->addBody([
'name' => 'john',
'email' => 'john@example.com',
]);
var_dump($request->getBody());
// -----------------------
// but this will return the "body" that was passed in above.
$request = $request->addBody([
'name' => 'john',
'email' => 'john@example.com',
]);
var_dump($request->getBody());
我看到这里正在发生的事情。但我不明白为什么一个类会像这样实现。
有什么好处吗?为什么要以这种方式限制开发人员呢?