1

私はより多くのOOPHPに取り組み始めており、そのオブジェクトのテストも作成しています。私の主な質問は、Blog_Postオブジェクトがあり、それを呼び出す$post->setCategory( 'Foo' )場合、データベースに直接保存する必要があるかどうかです。

私が尋ねる理由はユニットテストのためです、それは私がテストしているものではないので、私はしばしばこれらの種類のもののためにDBを使用したくありません。

私は人々が次のようなことをすることを提案するのを見ました

function __construct( PDO $db )

使用するデータベースオブジェクトを渡し、テスト時にモックを使用します。ただし、Blog_Postクラスを呼び出しているものによって、データベースオブジェクトを常にインスタンス化するというアイデアは本当に好きではありません。

これは基本的にオブジェクト指向アプローチを持たないWordPressの範囲内です-私の現在のBlog_Postでは、setterメソッドはDBを呼び出すだけです(グローバル$ wpdb !!(私は知っています!))。

本当に知りたかったのですが、このようなもので最も抵抗の少ない経路である一般的なパターンは何ですか。Blog_Postはそれ自体を書くだけでしょうか、それとも「save()」メソッドを使用して、設定されたすべてのプロパティを実際にDBにプッシュするのでしょうか。または、セッターを呼び出す前に、オブジェクト「setSaveToDB(false)」にフラグを設定することもできます。

ありがとう、これが理にかなっていることを願っています!

4

2 に答える 2

1

簡単な答え:いいえ。読み込みを委任し、別のレイヤーに保存します。

于 2012-04-25T18:33:31.440 に答える
0

何らかのパフォーマンスを求めている場合は、プロパティが設定されている場合は常に保存するよりも、オブジェクトで-> save()関数を使用することをお勧めします。プロパティが設定されるたびにデータベースに書き込む場合、7つのプロパティを持つオブジェクトはデータベースに7回書き込みます。保存機能がある場合は、7つのプロパティすべてに1つの書き込みのみが使用されます。db接続を開くことは、dbの最も遅い機能であるため、個別の読み取り/書き込みの量を最小限に抑える必要があります。一般的に、dbへの接続を開いて1行を書き込むのは、接続を開いて100000行を書き込むのとほぼ同じ時間です。大きなデータセットを処理する場合、SQLは高速ですが、接続を開いて適切な読み取り/書き込み場所を見つけるのは非常に時間がかかります。

お役に立てれば :-)

于 2012-04-25T09:20:21.747 に答える