アフィリエイト広告を利用しています
検索
<< 2024年04月 >>
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
最新記事
タグクラウド
カテゴリーアーカイブ
ファン
最新コメント
プロフィール
ゼロから始めるシステム開発さんの画像
ゼロから始めるシステム開発
 こんにちは!ナビゲータのEVEです。各種研究室を用意し、次期EVEシステムを製造しようと日々頑張っています。現在一番力を入れているのが、資金調達です。このブログもその一環ですので、ご協力いただければ嬉しいです。
プロフィール

広告

posted by fanblog

2023年03月19日

残りの製造 [プログラム研究室]


 こんにちは!
 ナビゲータのEVEです。

 本日、継承で作らなければならない部分を一通り作ってみました。簡単な試験では、Update、Deleteの処理は正常に動いているようです。本日の製造は、これぐらいにして、明日に、Transaction,、Rollback、Commit処理が、Insert、Update、Delete処理を正しく制御できるか確認したいと思います。

[New Prototype EVE]
 以下が本日製造したプログラムです。昨日のブログで説明していませんでしたが、クラスの継承には、extendsしなくてはいけません。同部分については、赤く表示してるのでご確認ください。extendsの最後のsを忘れがちですが、気を付けてください。私だけですかね?
 なお、一度修正したロジックの一部を削除したプログラムですので、解説は不要でいいですよね?


<?php
require_once "EVESystemDB,php";//DB関連クラス
/*************************************************
*【クラス名 】DB関連クラス(New Prototype EVE対応)
*【製 造 者】EVE
*【製造年月日】2023年3月17日
*【更新年月日】2
*【リリース日】
*【バージョン】
*【 概 要 】
* データベースに関する基本的な機能を提供する
*************************************************/

class getInfDB extends getDB {
/*************************************************
*【メソッド名】レコード更新メソッド(New Prototype EVE)
*【 引 数 】$tbName :テーブル名
* u_Clum   :カラム名(配列)
*       u_Data   :データ(配列)
*       u_where   :更新条件("99"の場合は、"")
*【返 却 値】
* 正常時:true
* 異常時:false
*【製 造 者】EVE
*【製造年月日】2023年3月19日
*【更新年月日】
*【リリース日】
*【バージョン】
*【 概 要 】
* レコードを更新する
*************************************************/
//レコードを更新する

public function recUpdate(string $tbName,//テーブル名
array $u_Clum, //追加用項目
array $u_Data, //追加用項目
string $u_where){ //更新条件

//変数定義
static $i;
static $u_array = array();
static $strSql;
static $rtn;

//引数の判定を行う
//テーブル名を判定する

if ( $tbName == "" ) {
//異常の場合メッセージを設定し呼び出し元へ制御を移す
$this->processMessage = "テーブル名が設定されていません";

//呼び出し元へ制御を移す
return false;
}

//引数(配列)の判定を行う
if ( count( $u_Clum ) != count($u_Data) ) {
//引数の指定に誤りがある場合
$this->processMessage = "引数の指定に誤りがあります";

//呼び出し元へ制御を移す
return false;
}

//引数条件が設定されているかどうか判定する
if ( $u_where == "" ) {
//異常の場合メッセージを設定し呼び出し元へ制御を移す
$this->processMessage = "更新条件が設定されていません。";

//呼び出し元へ制御を移す
return false;
}

//SQL文を編集する
$u_array[] = "update ";
$u_array[] = $tbName;
$u_array[] = " set ";

//カラム配列終了まで以下の処理を実行する
for ( $i = 0; $i < count( $u_Clum ); $i++ ) {
//カラムを編集する
$u_array[] = $u_Clum[$i];
$u_array[] = " = ?";

//最終処理かどうか判定する
if ( count( $u_Clum ) == $i + 1 ) {
//最終処理の場合
//forを終了する

break;
} else {
//最終処理でない場合
$u_array[] = ",";
}
}
//検索条件の判定を行う
if ( $u_where != "99" ) {
//データの編集を開始する
$u_array[] = " where ";
$u_array[] = $u_where;
}
//SQL文を編集する
$strSql = implode( "",$u_array );

//プリシアードステートメント設定をする
$this->stmt = $this->getDbConnect->prepare($strSql);

//バインド変数終了まで以下の処理を実行する
for ( $i = 0; $i < count($u_Data); $i++ ) {
//バインド変数へデータを設定する
$this->stmt->bindParam($i+1,$u_Data[$i]);
}

//SQL文実行処理
try {

//レコード更新メソッドを実行する
$rtn = $this->stmt->execute();

} catch (PDOException $e) {
//更新処理が失敗した場合
//異常処理結果のメッセージを設定する

$this->processMessage = $e->getMessage();
//返却値を設定して呼び出し元へ制御を移す
return false;
}
//取得したレコード件数を設定する
if ( !($rtn = $this->recCount()) ) {
//返却値でエラーが発生していた場合
//処理結果を設定し呼び出し元へ制御を移す

return $this->processMessage;
}

//返却値を設定し呼び出し元へ制御を移す
return true;
}
/*************************************************
*【メソッド名】レコード削除メソッド(New Prototype EVE)
*【 引 数 】$tbName :テーブル名
*       d_where   :更新条件
*【返 却 値】
* 正常時:true
* 異常時:false
*【製 造 者】EVE
*【製造年月日】2023年3月19日
*【更新年月日】
*【リリース日】
*【バージョン】
*【 概 要 】
* [2023/03/06]
* レコードを更新する
*************************************************/
//レコードを削除する

public function recDelete(string $tbName, //テーブル名
string $d_where) { //更新条件

//変数定義
static $i;
static $strSql;
static $rtn;

//引数の判定を行う
//テーブル名を判定する

if ( $tbName == "" ) {
//異常の場合メッセージを設定し呼び出し元へ制御を移す
$this->processMessage = "テーブル名が設定されていません";

//呼び出し元へ制御を移す
return false;
}

//引数条件が設定されているかどうか判定する
if ( $d_where == "" ) {
//異常の場合メッセージを設定し呼び出し元へ制御を移す
$this->processMessage = "削除条件が設定されていません。";

//呼び出し元へ制御を移す
return false;
}

//SQL文を編集する
$d_array[] = "delete from ";
$d_array[] = $tbName;
$d_array[] = " where ";
$d_array[] = $d_where;

//SQL文を編集する
$strSql = implode( "",$d_array );

//プリシェアードステートメント設定する
$this->stmt = $this->getDbConnect->prepare($strSql);

//SQL文実行処理
try {
//レコード追加メソッドを実行する
$rtn = $this->stmt->execute();

} catch (PDOException $e) {
//削除処理が失敗した場合
//異常処理結果のメッセージを設定する

$this->processMessage = $e->getMessage();

//返却値を設定して呼び出し元へ制御を移す
return false;
}

//取得したレコード件数を設定する
if ( !($rtn = $this->recCount()) ) {
//返却値でエラーが発生していた場合
//処理結果を設定し呼び出し元へ制御を移す

return $this->processMessage;
}

//返却値を設定し呼び出し元へ制御を移す
return true;
}
/*************************************************
*【メソッド名】トランザクション開始メソッド(New Prototype EVE)
*【 引 数 】なし
*【返 却 値】なし
*【製 造 者】EVE
*【製造年月日】2023年3月19日
*【更新年月日】
*【リリース日】
*【バージョン】
*【 概 要 】
* トランザクションを開始する
*************************************************/
//トランザクションを開始する

public function setTran() {
//トランザクション情報を設定する
$this->getDbConnect->setAttribute(PDO::ATTR_ERRMODE,
PDO::ERRMODE_EXCEPTION);
//トランザクションを開始する
$this->getDbConnect->beginTransaction();
}
/*************************************************
*【メソッド名】コミットメソッド(New Prototype EVE)
*【 引 数 】なし
*【返 却 値】なし
*【製 造 者】EVE
*【製造年月日】2023年3月19日
*【更新年月日】
*【リリース日】
*【バージョン】
*【 概 要 】
* 処理を確定する
*************************************************/
//データベースを確定する

public function setCommit() {
//確定処理を実行する
$this->getDbConnect->commit();
}
/*************************************************
*【メソッド名】ロールバックメソッド(New Prototype EVE)
*【 引 数 】なし
*【返 却 値】なし
*【製 造 者】EVE
*【製造年月日】2023年3月19日
*【更新年月日】
*【リリース日】
*【バージョン】
*【 概 要 】
* トランザクションを発生した処理をロールバックする
*************************************************/
//データベースをロールバックする

public function setRollback() {
//処理をロールバックする
$this->getDbConnect->rollBack();
}
}
?>




[あとがき]
 これで、Prototype EVEのデータベース関連関数の全てが修正できます。明後日以降、一気に修正しようかなって考えています。ただ、ですね・・・。個人的に、便利なプログラムをたくさん作った関係で、今まで作ったところは全体の1/3になります。作るだけなら、数日でできると思いますが、デバックは、ちょっと、時間が必要だと思われます。まっ、全体を作りながらデバックするっていう方法もありますが、まだ、どんな変更点があるのか分からない場合、修正している途中で、何がなんだかわからなくなる可能性があります。どうしましょうか?
 データベース関連の修正ができれば、Prototype EVEのログインシステムが利用できるようになるので、そこから、Prototype EVEとPHP8の不整合の確認ができる予定です。
 という状況で、今月末ぐらいで、今後の見通しがなんとなく立ちそうな予感がしてきました。

 今までは、システムの基本的な部分で、誰が作っても同じようなロジックになる所なので、公開してきましたが、以降は、取捨選択して、お見せできるものだけ、公開していく予定です。

 では、また!
タグ:php 継承 extends
この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/11909863
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
×

この広告は30日以上新しい記事の更新がないブログに表示されております。