こんにちは!
ナビゲーターのEVEです。
システム開発は順調なのですが、体調があまりよくなく、眠れない状態が続いています。季節の変わり目で寝苦しいだけだと思うのですが・・・?
現在は脳を酷使し、その疲れで早く寝る要に努力しています。
それでは、今日はPrototype EVEの修正状況についてお話しします。
[Prototype EVE改修の経緯]
EVEシステム(新システム)を製造したいのですが、そこまで一足飛びでシステムを製造した場合、時間がかかる上に、製造後の手戻りが多そうだったため、一旦はあきらめました。その代わりに、Prototype EVE(既存のシステム)を改修することにしました。同システムは、PHP5で製造されているため、まずは、PHP8で動作するように改修しなければなりません。現在は、同作業をすることにより、その過程で、オブジェクト指向言語の開発に慣れ、EVEシステムのコンセプトを整理することを副次的な目的としています。
今回のPrototype EVE改修の目標は、以下の通りです。
❶Prototype EVEのアプリケーション群のプログラムを変更しないこと。
❷新たに追加する部分、特にDBに接続するプログラムをオブジェクト指向で製造すること。
これらの制約を2023年02月21日の「EVEシステムの製造を開始します [システム開発研究室]」で発表してから、同制約を守りながら苦戦してきましたが、やっと、通常のプログラム開発ができるレベルまで改修を進めることができました。通常のプログラムとは、Prototype EVEのフレームワークに相当する関数の改修作業です。
以下に、どのような進捗があったのか、報告します。
[Prototype EVE改修状況]
/*************************************************
*【 関数名 】DB接続関数
*【 引 数 】なし
*【返 却 値】
* 配列[0]:link
* 配列[1]:異常メッセージ
*【製 造 者】EVE
*【製造年月日】2005年02月20日
*【更新年月日】2023年4月14日
*【リリース日】
*【リリース日】2.0
*【 概 要 】
*************************************************/
function gb_dbconnect() {
//変数定義
$rtn = array();
$db = "";
//インスタンス作成
try {
//インスタンス作成
$db = new getInfDB(db,host,'utf8',user,pass);
} catch (PDOException $e) {
//例外メッセージを格納する
$this->setErrorMessage($e->getMessage());
//返却値を設定し呼び出し元へ制御を移す
$rtn[1] = false;
}
//取得したコネクトインスタンスをサーバーサイトへ設定する
$_SESSION['db'] = $db;
//返却値にコネクトインスタンスを設定する
$rtn[0] = $db;
//正常終了の設定を行う
$rtn[1] = true;
//返却値を設定し呼び出し元へ制御を移す
return $rtn;
}
/*************************************************
*【 関数名 】トランザクション発生関数
*【 引 数 】
* 種別
* 0:auto
* 1:明示的に確定を実施*【返 却 値】
*【返 却 値】なし
*【製 造 者】EVE
*【製造年月日】2008年1月2日
*【更新年月日】2023年3月30日
*【リリース日】
*【バージョン】
*【 概 要 】
*************************************************/
function gb_tran( $sub ) {
//変数定義
$rtn = "";
$db = "";
//サーバーサイト変数を削除する
unset($_SESSION["db"]);
//コネクトインスタンス取得・設定
$rtn = gb_dbconnect();
//コネクトインスタンスをサーバーサイトから取得する
$db = $_SESSION['db'];
//トランザクションを開始する
$rtn = $db->setTran();
//コネクトインスタンスをサーバーサイド変数へ設定する
$_SESSION['db'] = $db;
}
/*************************************************
*【関 数 名】トランザクション確定関数
*【 引 数 】なし
*【返 却 値】なし
*【製 造 者】EVE
*【製造年月日】2008年1月2日
*【更新年月日】2023年3月30日
*【リリース日】
*【バージョン】
*【 概 要 】
*************************************************/
function gb_commit() {
//変数定義
$rtn = "";
$db = "";
//コネクトインスタンスをサーバーサイトから取得する
$db = $_SESSION['db'];
//処理を確定する
$rtn = $db->setCommit();
//キーを初期化する(現在調査中)
unset($_SESSION['key']);
//サーバーサイトにcommitを設定する(現在調査中)
$_SESSION['commit'] = "commit";
}
/*************************************************
*【関 数 名】ロールバック関数
*【 引 数 】なし
*【返 却 値】なし
*【製 造 者】EVE
*【製造年月日】2008年1月2日
*【更新年月日】2023年3月30日
*【リリース日】
*【バージョン】
*【 概 要 】
*************************************************/
function gb_rollback() {
//変数定義
$rtn = "";
$db = "";
//コネクトインスタンスをサーバーサイトから取得する
$db = $_SESSION['db'];
//処理をロールバックする
$db->setRollback();
//サーバーサイト変数を削除する
unset($_SESSION["db"]);
}
/*************************************************
*【メソッド名】DBinsert 関数(Prototype EVE)
*【 引 数 】
* p_table テーブル名
* p_item 項目名(配列)
* p_data 入力データ(配列)
*【返 却 値】
* 正常時:""
* 異常時:エラーメッセージ
*【製 造 者】EVE
*【製造年月日】2005年02月20日
*【更新年月日】2023年03月29日
*【リリース日】
*【バージョン】
*【 概 要 】
* [2023/03/03]
* レコードを追加する
*************************************************/
function gb_dbinsert($p_table,
$p_item,
$p_data ) {
//変数定義
$rtn = "";
//引数の入力データチェック
//テーブル名を確認する
if ( $p_table == "" ) {
//テーブル名が設定されていない場合
return "テーブル名が設定されていません。";
}
//項目数とデータの数を比較する
if ( count($p_item) != count( $p_data ) ) {
//違いがあった場合エラーメッセージを返却地にセットする
return "カラムとデータに不整合があります。";
}
//サーバーサイト変数としてコネクトインスタンスを取得する
$db = $_SESSION['db'];
//データベースの登録の初期設定を行う
//SQLを実行する
$rtn = $db->recInsert($p_table,$p_item,$p_data);
//返却値を設定する
if ( $rtn == false ) {
//サーバーサイト変数を削除する
unset($_SESSION["db"]);
//返却値が異常の場合
$rtn = $db->getErrorMessage();
}
//コネクトインスタンスをサーバーサイト変数として設定する
$_SESSION['db'] = $db;
//返却値の返却
return $rtn;
}
以前のブログ記事でもお話したように、苦労した点はコネクションインスタンス取得・設定でした。サーバーサイト変数やセッション変数を使用して、各関数からコネクションインスタンスを利用できるようにしたかったのですが、問題が発生し、しばらく開発が停滞していた時期がありました。しかし、偶然にも問題が解決され、現在は順調にシステム開発を続けています。
[あとがき]
現在の開発状況は、データベース関連の部分に注力しており、以下はその関数の数とステップの数字です。今後も進捗状況を報告し、何か気づいたことがあればお知らせします。
では、また!
□Prototype EVE変更プログラム進捗状況
修正プログラム本数 6/26本
修正プログラムステップ数 257/2233ステップ
■EVEシステムの製造を開始します [システム開発研究室]
https://fanblogs.jp/bahamuteve/archive/232/0
タグ:オブジェクト指向言語 php