私は最近、ユーザーの投稿データを取得するためにSlim\Http\Message
とSlim\Http\Request
を使用しなければなりませんでした。oopでオブジェクトのクローンを返すのはなぜですか?
$this
ではなく、オブジェクトのクローンを返すメソッドwithBody()
に何か気付いた。
$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' => '[email protected]',
]);
var_dump($request->getBody());
// -----------------------
// but this will return the "body" that was passed in above.
$request = $request->addBody([
'name' => 'john',
'email' => '[email protected]',
]);
var_dump($request->getBody());
ここで何が起こっているのか分かります。しかし、私は理解していないなぜクラスはこのように実装されるだろう。
どのようなメリットがありますか?このように開発者を制限するのはなぜですか?
を実際PSR-7標準でおしっこを見てhttps://blog.joefallon.net/2015/08/immutable-objects -in-php /)」となります。 – Fildor
そして機能プログラミング –
意見に基づいて投票に投票しました。 https://softwareengineering.stackexchange.comを試してみてください。そこに移行する投票はできません –