読者です 読者をやめる 読者になる 読者になる

prepend.php

<?php
    define("DB_INFO","dbname=hoge user=fuga password=hogefuga");

    define("MODE_EDIT"   ,"Edit");
    define("MODE_ENTRY"  ,"Entry");
    define("MODE_GET"    ,"Get");
    define("MODE_CANCEL" ,"Cancel");
    define("MODE_CALC"   ,"Calculate");
    define("MODE_DELETE" ,"Delete");
    define("MODE_OUTPUT" ,"Output");

    $PREPEND ="Set";

    $cust_id   = 10;
    $user_id   = 1;
    $user_name = "oss";
    $PREPEND   = "";
?>

インストール時には他の定義などは特に見なかったのですが、
再度みてみると、$cust_id,$user_id,$user_nameなどが定義されていることが分かり
ました。。。


$cust_id = 10;
$user_id = 1;
$user_name = "oss";
以上のような設定になっています。
ずっと空の文字列だと思い込んでソースを読んでいたので、
KigyoCommonDataModuleクラスのコンストラクタ呼び出し処理まで戻ります。。。

  • KigyoCommonDataModule(再度)

コンストラクタが呼び出されると、menucust_id関数が実行され、引数に$cust_id、
すなわち「10」が入ります。
関数内の処理は、値が入っていたらその値を代入、値が入っていたらデフォルト値である
空の文字列を代入します。
次にuser_name関数が実行され、引数に$user_nameすなわち「oss」が入ります。
関数内の処理は、cust_idと同様です。
次にkigyo_joho関数が呼び出されます。

kigyo_joho(sukedachikaikei/Common/Dtm/DtmCKigyo.php内)

<?php
function kigyo_joho() {
	$obj = new KigyoCommonDataModule($this->cust_id, $this->user_name);
	if($obj->open() and $obj->get_data(0)) {
		$this->kaisha_mei = $obj->kaisha_mei();
		$this->busho_mei = $obj->busho_mei();
	}
}

先ほど設定したcust_id,user_nameを引数として、KigyoCommonDataModuleクラスの
コンストラクタを呼び出します。
KigyoCommonDataModuleクラスは/sukedachikaikei/Common/Dtm/DtmCKigyo.phpにて定義
されています。

<?php
  function KigyoCommonDataModule($cust_id, $user_name) {
    $this->cust_id($cust_id);
    $this->user_name($user_name);
    $this->connect();
  }
?>

cust_id()は$cust_idの値が空の文字列の場合でない場合、引数が返ってきます。
user_name()も同様です。connect()は、DBへの接続をおこなっています。
ここで分からないことがでてきました。
KigyoCommonDataModuleクラスのコンストラクタ呼出し後、
結果(生成されたオブジェクト)を$objという変数へ代入しているのですが、
どのような結果が代入されているのだろうか??ということです。
実際に画面に出力してみると、


KigyoCommonDataModule Object (
[zeirishi_id] =>
[kigyo_id] =>
[fget_all] =>
[fget_null] =>
[get_order] =>
[cust_id] => 10
[user_name] => oss
[exec_ID] =>
[rows] =>
[read_id] =>
[seq_id] =>
[db_arr] => Array ( )
)
のようになっていました。コンストラクタ呼出し後に処理された変数群がオブジェクト
として返ってきています。(何か表現が変なような?)
関数を呼び出していたcust_id,user_nameにはそれぞれ10,ossという値が入っていて、
何もしていない変数はクラス呼び出しの際に初期化された値のままです。
って当たり前ですかね^^;まぁ、分かったからよしとします。

そして、関数open()とget_data()(引数として'0'を指定)を呼び出します。

open関数(sukedachikaikei/Common/Dtm/DtmCBase.php内)

<?php
  function open() {
    return $this->sql_exec($this->GetSql());
  }
?>

次にsql_exec関数をGetSql関数の返り値を引数として呼び出しています。

sql_exec(sukedachikaikei/Common/Dtm/DtmCBase.php内)

<?php
	function sql_exec($sql) {
		$this->rows = "";
		$this->debug_print($GLOBALS["LinkID"]."<BR>".$sql."<BR>\n");
		$this->exec_ID = pg_exec($GLOBALS["LinkID"], $sql);
		return $this->exec_ID;
	}
?>

その前に、GetSql関数を呼び出し、結果をsql_exec関数の引数としているので、
そちらを先に確認します。

GetSql

<?php
	function GetSql() {
	}
?>

・・・って何もしてない関数でした--;
するとsql_exec関数の引数は何もはいりません。
続いてsql_exec関数内の処理を見ていくと、debug_print関数という関数が出てきます。

debug_print(sukedachikaikei/Common/Dtm/DtmCBase.php内)

<?php
  function debug_print($val) {
/*
    if ($GLOBALS["PREPEND"] == "") {
      print $val;
    }
*/
  }
?>

コメントされているので、関数の名前から察するにデバッグして$GLOBALS配列の値を
確認したいときに使うんでしょうか???
コメントを外して新規登録画面をリロードしてみると、
他のdebugも有効になって色々出てきましたが、
$GLOBALS["LinkID]の値は、


Resource id #13
と出力されました。
すると、pg_exec関数は、
pg_exec("Resource id #13","")という形で実行されることになります。
第2引数に実行すべきクエリがないため、結果はFALSEになります。
すると、kigyo_joho関数の

if($obj->open() and $obj->get_data(0){
・・・
}
の部分は実行されないことになります。
次回はnendo_joho関数です。