データベースから多数のオブジェクトをロードしていると仮定します。これらは通常のプレーンなPHPオブジェクトであり、派手なものからの継承はありません。これらのオブジェクトのいくつかを変更してデータベースに書き戻したいが、UPDATE ...SET...クエリで実際に異なるフィールドのみを使用するとします。また、どのオブジェクトが変更されるのかを事前に知らないとします。
ロードされたすべてのオブジェクトのコピーを作成し、オブジェクトをデータベースに書き戻す必要がある場合に備えて、参照と比較のために保管しておく必要があると考えています。
私は2つの可能なアプローチを見ます:
- ロードされたすべてのオブジェクトのクローンを作成して、別のリストに保存することができます。保存するときは、インデックスを使用してリスト内のオブジェクトを検索し、値を比較します。
- または、ロードされたすべてのものを文字列にシリアル化して、そのままにしておくこともできます。保存するときは、文字列内でシリアル化されたオブジェクトを(何らかの方法で)見つけ、シリアル化を解除し、値を比較してください。
効率(主にメモリですが、速度も考慮事項です)の観点から、どちらが好ましいでしょうか?