以下の 2 つの簡略化されたスニペットは、結果に違いはありません。
パターン 1、ゼロからのオブジェクト:
foreach ($recipients as $recipient) {
$message = new Message();
$message->setBody("This is the body of the message.");
$message->setRecipient($recipient);
$transport->sendMessage($message);
$persister->saveToDatabase($message); // Updated line
unset($message);
}
パターン 2、プロトタイプ オブジェクトのクローン作成:
$prototype = new Message();
$prototype->setBody("This is the body of the message.");
foreach ($recipients as $recipient) {
$message = clone $prototype;
$message->setRecipient($recipient);
$transport->sendMessage($message);
$persister->saveToDatabase($message); // Updated line
unset($message);
}
unset($prototype);
オブジェクトの複製 (パターン 2) は、メモリ使用量、ガベージ コレクション、CPU サイクルの点で、オブジェクトを最初から作成する (パターン 1) よりもパフォーマンスが向上しますか? 多数の固定プロパティ (インスタンス間で変更されない) と多数のループも考慮してください。
更新: ループごとに異なるオブジェクト インスタンスが必要です。saveToDatabase
それに似るように例への呼び出しを追加しました。たとえば、メッセージに ID を与えます。;)