こんにちは!
ナビゲータのEVEです。
本日は、お約束した、レコード件数カウントの部分の解説です。そして、露見した問題というか、当初から想像はしていたのですが、その問題と対応について解説をします。
[Prototype EVE、EVEシステムインターフェース]
以下が、レコード件数を取得するロジックになります。今回は、ステップ数が少ないため、パブリック変数定義、取得レコード件数カウントメソッド呼び出し元、そして、取得レコード件数カウントメソッドなど、件数をカウントに関連する部分のすべてを掲示しています。
---変数定義---------------------------------
//❶パブリック変数定義
public $Count = 0; //SQL実行件数
---レコードカウント呼び出し元---------------------------------
//❷取得したレコード件数を設定する
if ( !($rtn = $this->recCount()) ) {
//返却値でエラーが発生していた場合
//処理結果を設定し呼び出し元へ制御を移す
return false;
}
//異常処理結果のメッセージを設定する
return true;
---取得レコード件数カウントメソッド呼び出し元---------------------------------
/*************************************************
*【メソッド名】取得レコード件数カウントメソッド
*【 引 数 】なし
*【返 却 値】
* 正常時:true
* 異常時:false
*【製 造 者】EVE
*【製造年月日】2023年3月15日
*【更新年月日】
*【リリース日】
*【バージョン】0.1
*【 概 要 】
* 取得したSQLオブジェクトから件数を取得する
*************************************************/
//データベースを検索する
public function recCount() {
//件数をカウントする
try {
//❸件数をカウントする
$this->Count = $this->stmt->rowCount();
} catch (PDOException $e) {
//❹例外メッセージを格納する
$db->processMessage = $e->getMessage();
//返却値を設定し呼び出し元へ制御を移す
return false;
}
//❺カウントした結果を返却値に設定し呼び出し元へ制御を移す
return true;
}
❶は、今回の取得レコード件数カウントメソッドで取得した情報を格納します。Privateにしようかな?っとも思ったのですが、Privateにしたことにより、getをわざわざ作る意義を感じることができなかったため、Publicとしました。但し、後日、Privateになっていることもあるかもしれません。
❷は、呼び出し元のプログラムです。Select、Insert、Update、Delete処理などの実行後にこのような形で定義しています。
❸以降が、メイン処理になります。Select、Insert、Update、Delete処理の実行結果を用いそれぞれのレコード件数を取得し、取得したデータを❶の[SQL実行件数]へ設定しています。
❹は、エラーになった場合の処理になります。レコード件数をカウントするだけでエラーにあるとは考えにくいのですが、念のため設けました。
❺そして、最後に、返却値にtrueを設定し、呼び出し元❷へ制御を移しています。
[レコード件数メソッドを作り終えて]
普通ならこのようなロジックをにプログラミングのたびに製造しなくてはいけないのですが、メソッドとして外だしすることにより、SQL実行結果のレコード件数を、❶のプロパティの中を除くだけで、取得することができます。やはり、常時使うものは、このような形で共通化することにはメリットがあります。
[今まで作ったプログラムの問題点]
今まで作ったオブジェクト指向のプログラムには、1つ問題がありました。それは、EVEシステムでは、トランザクションの開始、処理のコミットはほぼ自動で、フレームワーク側で行うというコンセプトで製造していました。しかし、前も一度触れているのですが、Prototype EVEでは、呼び出し元のアプリケーション群で、トランザクションの開始、コミットを制御しています。このため、今まで作ったプログラムをそのまま利用しようとした場合、修正は一切加えないとしている、アプリケーション群に変更を加えなければなりません。ただ、それは、制約上許されません。
じゃ、仕方がないので、トランザクションの開始をアプリケーション側で行うようにEVEシステムを作り直したら、それは、EVEシステムではなくなってしまいます。じゃ、どうしたらいいのか?そこで出てきたのが、EVEシステムを継承し、New Prototype EVEを新たに製造するというアイディアです。昨日プログラマとして初体験の技術を使うと話していた技術は、この継承です。
継承を使うことにより、生産性が上がるのと同時に、今まで通り次期システムの製造も同時平行的に行うことができます。ただ、New Prototype EVEは作らなければなりませんが・・・。
この初体験ですが、心配なのが、親と子の関係がどのくらい有効で、どのようなふるまいをするのか、明確に想像できないということです。作りながら、親と子のクラスがどんなふるまいをするのか調べながらの製造になりそうです。
明日以降は、Insert、Update、Delete、Transaction、Rollback、Commitに関する部分をオーバーロードして作り直す予定です。ロジックはほぼそのまま利用できる予定なので、継承における親と子のクラスがどのようにふるまうのかという調査に時間を掛ける予定です。
では、また!
【このカテゴリーの最新記事】