-------------------------------------------------------------------------------- クイックマニュアル コアモジュール関数/変数編 ver 0 2005/10/17 ver 0.1 2005/11/02 ver 0.2 2006/02/26 -------------------------------------------------------------------------------- コアモジュールにはいくつか便利でよく利用する関数が内蔵されてあります。 またコアモジュール内部で利用している定義済み変数もあります。 ■定義済み変数 $MAIN_OPTION メインディレクトリ設定 $MAIN_SESSION_TIMEOUT='';DBセッション用 $MAIN_OUTPUT=array(); 画面出力用 $MAIN_SKIN_POSISION_STACK=array();画面出力用 $MAIN_SKIN_POSISION_MODULE='';画面出力用 $MAIN_SKIN_POSISION_BLOCK='';画面出力用 $MAIN_SKIN_LOOP_COUNT=array(); ループカウンター 上記変数はコアで利用していますので、いじらないように!! ■定義済み定数 MAIN_DIR メインディレクトリの内容が定義されています。 MAIN_LANG 内部エンコーディングが定義されています。 OUTPUT_LANG 出力エンコーディングが定義されています。 SIMPLEY_CACHE_CHMOD スキンキャッシュ生成時のアクセス権が定義されています。 MAIN_DB 利用するデータベースが定義されています。 DB_LANG 利用するデータベースのエンコーディングが定義されています。 TAGCONV スキンのタグ解析用正規表現が定義されています。 ■データベース関連  標準で MySQL / PostgreSQL / Oracle / SQLite(ver2) / MS-SQL に対応しています。  面倒な接続処理などはコアモジュールが自動でやってくれます。 ■モジュール/ブロック呼出  任意で他のモジュールを呼び出したり、オブジェクトを取得します。 いちいち include_once('/path/to/class.php') とか書かなくても自動でやってくれます。 ■デバッグ関連  変数の状態などを取得できます。 ■定義済み変数 $MAIN_OPTION メインディレクトリ設定 $MAIN_SESSION_TIMEOUT='';DBセッション用 $MAIN_OUTPUT=array(); 画面出力用 $MAIN_SKIN_POSISION_STACK=array();画面出力用 $MAIN_SKIN_POSISION_MODULE='';画面出力用 $MAIN_SKIN_POSISION_BLOCK='';画面出力用 $MAIN_SKIN_LOOP_COUNT=array(); ループカウンター 上記変数はコアで利用していますので、いじらないように!! ■定義済み定数 MAIN_DIR メインディレクトリの内容が定義されています。 MAIN_LANG 内部エンコーディングが定義されています。 OUTPUT_LANG 出力エンコーディングが定義されています。 SIMPLEY_CACHE_CHMOD スキンキャッシュ生成時のアクセス権が定義されています。 MAIN_DB 利用するデータベースが定義されています。 DB_LANG 利用するデータベースのエンコーディングが定義されています。 TAGCONV スキンのタグ解析用正規表現が定義されています。 ■データベース関連 mixd SelectRec( $sql ) sql セレクトを実行します。 結果が正しく返ってきたときは2次元配列で結果が返ってきます。 (以下の例は数字添え字を利用した場合ですが、SELECTで指定したカラム名がキーになった配列も同時に取得できています。) sql実行エラーの場合は false が返ってきます。 例. $output=array(); $sql = "SELECT ID,SUBJECT,BODY,DATE,LAST_UPDATE FROM NEWS ORDER BY DATE DESC LIMIT 0,10 "; $value = SelectRec( $sql ); //比較演算子は===でなければ結果セットが0件の場合もfalseと判定されてしまいます。 if($vales===false){ $message="エラー\n"; }else{ foreach( $value as $line ){ $output['list'][]=array( //SQLの取得したレコード順に 'ID'=>$line[0], //ID 'SUBJECT'=>$line[1], //SUBJECT 'BODY'=>$line[2], //BODY 'DATE'=>$line[3], //DATE 'LAST_UPDATE'=>$line[4] //LAST_UPDATEが入ります。 ); } } //カラム名をそのままスキンにパースしたい場合は $output['list']=$value; //の用に返せます。 //skinでは <% val(list/ID) %>の様に書けます //リスト表示の場合は<% each() %>を利用してください。 $output['message']=$message; return $output; ------------- mixd SelectRow( $sql ) sql セレクトを実行します。 結果が正しく返ってきたときは1次元配列で結果が返ってきます。 (以下の例はカラム名をキーに利用した場合ですが、SELECTで指定したカラム順に数字添え字がキーになった配列も同時に取得できています。) sql実行エラーの場合は false が返ってきます。 例. $output=array(); $sql = "SELECT ID,SUBJECT,BODY,DATE,LAST_UPDATE FROM NEWS ORDER BY DATE DESC LIMIT 0,1 "; $value = SelectRec( $sql ); //比較演算子は===でなければ結果セットが0件の場合もfalseと判定されてしまいます。 if($vales===false){ $message="エラー\n"; }else{ $output['info']=array( //SQLの取得したレコード順に 'ID'=>$vales['ID'], //ID 'SUBJECT'=>$vales['SUBJECT'], //SUBJECT 'BODY'=>$vales['BODY'], //BODY 'DATE'=>$vales['DATE'], //DATE 'LAST_UPDATE'=>$vales['LAST_UPDATE'] //LAST_UPDATEが入ります。 ); } return $output; ------------- bool RunSql( $sql ) sql アップデート・インサート・デリート(他テーブル操作等)を行います。 主に更新系SQL文を実行する場合にこの関数を利用します。 sql実行エラーの場合は false が返ってきます。 例. $output=array(); $SUBJECT='php news'; $ID=12; $sql="UPDATE NEWS SET SUBJECT='$SUBJECT' , LAST_UPDATE=NOW() WHERE ID=$ID"; if( RunSql($sql)==false ){ $message="エラーってます。\n"; }else{ $message="更新しました。\n"; } $output['message']=$message; return $output; ------------- ■モジュール/ブロック実行呼出 _block_load( $module, // モジュール名 $block, // ブロック名 $value='' // Variables OPTION ) スキンタグの blockタグとよく似ています。 違うところは value を直接配列で渡せないところです。 $value="page=10&color=red"; の用に渡す必要があります。 例. $return = _block_load('news','list','page=nolimit'); print_r($return); ----- オブジェクトの呼び出し object ObjectLoad( $module , $value='' ) boject_load関数は module をインクルードし new moduleしたオブジェクトを返します。 value はオブジェクトを作成したときのオプションです(が現在実験中で危険です) 例. $Simpley=new Simpley; $object = $Simpley->ObjectLoad( 'news' ); print_r($object); ------- モジュールのインクルード bool include_module($module) include_module関数は module.php のファイルの有無を調べてファイルが有る場合 include_onceを試みます。 ファイルが無い場合は false; 主に汎用なクラスライブラリを利用する際に有効です。 例. Simpley::include_module("mail"); ------- 連想配列変数を任意のエンコーディングへ変更する。 ConvartEnc( $arr , $mode ) modeは 1 内部エンコードから外部 2 外部から内部エンコード 3 DBから内部 4 DBから外部 5 内部からDB 6 外部からDB 例. 外部からくる変数が自動変換されない場合以下のように利用できます。 $Simpley=new Simpley; $Simpley->ConvertEncreset(); //まずテンポラリをリセット $arr=$Simpley->ConvartEnc( $_POST , 2 ); var_dump($_POST); //外部エンコーディングのまま var_dump($arr); //内部エンコーディングへ変換されている。 内部エンコーディングと外部エンコーディングが同一の場合は値は変換されずにそのまま返ってきます。 ------- 変数を任意のエンコーディングへ変更する。 valconv($value,$mode) modeは 1 内部エンコードから外部 2 外部から内部エンコード 3 DBから内部 4 DBから外部 5 内部からDB 6 外部からDB 例. $Simpley = new Simpley; $value = $Simpley->valconv( $value , 5 ); ------- 文字列をDBに合うようにエスケープする DBquote($str) $strを設定しているDB向けにエスケープします。 DBを利用しない設定の場合はaddslashesされます。 MagicQuoteがOnの場合は(すでにエスケープされているので)エスケープされずにそのまま値が返ります。 例. $Simpley = new Simpley; $str = $Simpley->DBquote($str); $sql="select name from table where address=$str "; $value=SelectRec($sql); ------- ■デバッグ関連 DebugOut() 引数無しで利用します。 現在利用している全ての変数の一覧と値をコンフィグで指定したエラーログに出力します。 debug_var_dump( $value ) value の変数を var_dumpした結果をコンフィグで指定したエラーログに出力します。 コンフィグについては初期設定マニュアルを参照してください。 ■メールモジュール 単純にmodules以下にmailモジュールをインストールし、langファイルにある設定を変更することですぐに利用できます。 利用例としては、他のコントローラーモジュールより呼び出して利用します。 例. $subject='件名'; $body='本文'; $to_mail='宛先メールアドレス'; $from_mail='差出人メールアドレス'; // Simpleyコアをnewする。 $Simpley=new Simpley; //メール送信 if( $Simpley->_block_load( "mail" , "mail_send","subject=$subject&body=$body&to_mail=$to_mail&from_mail=$from_mail")==false ){ $message ='メール送信失敗'; }else{ $message ='メール送信成功'; } 宛先及び差出人メールアドレスの指定を無しで利用した場合はメールモジュールの langに設定してあるメールアドレスが上書きされます。