TOOL更新_今日はエレメントクラス(シングルトン)
TOOL更新_今日はエレメントクラス(シングルトン)。まだ実験中なのでコーディング規約には沿っていないけど、徐々に、このページを直接直していくことにする。
・コンスタント値を配列で持つ。あとでロジックを追加(コンスタントテーブルを作ってそこから値をとってくるなど、や、プログラムからコンスタントを追加する、変更するなど)するときのためにシングルトンにした。たぶん、あとあとハンドリングしやすいと思う。
■使い方はこんな感じ
・AppSmartyPlugin.php (Smartyのプラグイン) /** * ------------------------------------------------------------- * Smarty {get_element} function plugin * * Type: function<br> * Name: get_element<br> * Input:<br> * - elename コード一覧(AppElements)のコード名 * - value コード値 * - idx elements_idx ('0':日本語、'1':英語) デフォルト='0' * - tdKbn テーブルTD区分 ('TD':テーブルTD、 以外(指定なしを含む)) * Purpose: AppElementsからコード値を取得しエスケープして戻します。 * @param array * @param Smarty * @return string * @uses smarty_function_escape_special_chars() * ------------------------------------------------------------- **/ function smarty_function_kaz_element($params, &$smarty) { require_once $smarty->_get_plugin_filepath('shared','escape_special_chars'); // エスケープ処理 $elements = AppElements::getInstance(); // コード一覧 if( isset($params['elename']) == false){ $smarty->trigger_error("kaz_element: missing 'elename' parameter"); return; } if( array_key_exists('value', $params) == false){ $smarty->trigger_error("kaz_element: missing 'value' parameter"); return; } if( isset($params['idx']) == false){ $params['idx'] = '0'; // 日本用 } if( isset($params['tdKbn']) == false){ $params['tdKbn'] = ''; // テーブルTD以外 } if(mb_strwidth($params['elename']) == 0 || mb_strwidth($params['value']) == 0){ // パラメータに値がない場合 $rtn = ""; } else { $rtn = smarty_function_escape_special_chars( $elements->elements[$params['elename']][$params['value']][$params['idx']]); } if (strtoupper($params['tdKbn']) == 'TD' && (is_null($rtn) || $rtn == "")){ // テーブルTDの場合かつ、値が空白のとき return " "; } return nl2br($rtn); } ・logininfoListView.html (smartyのtemplates) {{kaz_element elename='LOGIN_TYPE' value=$vals.login_type idx=$o.c_elements_idx tdKbn='TD'}}
■エレメントクラス(シングルトン)の例はこれ。
<?php /* プルダウン・チェックボックス等で使用する要素の定義 */ // ============================================================= // 2009 kaz PHP自動作成お助けTOOL.(http://kazpgm.ddo.jp/) Start // 修正BSDライセンス。 // ============================================================= class AppElements { public $elements = null; // シングルトンオブジェクトを格納する変数 private static $_singleton = null; // コンストラクタをprivateにして直接newできないようにしています。 // 「クラス名::getInstance();」を使用してください。 // 「new クラス名();」だと「Fatal error: Call to private クラス名::__construct() ・・・」になります private function __construct() { } // インスタンスを生成する public static function getInstance() { if (AppElements::$_singleton == null) { AppElements::$_singleton = new AppElements(); AppElements::$_singleton->initElements(); } return AppElements::$_singleton; } private function initElements(){ $this->elements = array( // ログイン権限 'LOGIN_TYPE' => array( '1' => array('Super管理者','SuperAdmin'), '2' => array('管理者','Admin'), ), // 有効フラグ 'YUKO_FLG' => array( '1' => array('無効','Invalid'), '2' => array('有効','Effect'), ), // 有効/無効データ 'DELDT_FLG' => array( '1' => array('無効のみ',''), '2' => array('有効のみ',''), ), // 公開区分 'OPN_KBN' => array( '1' => array('公開','open'), '2' => array('非公開','closed'), ), // 都道府県 'CITY' => array( '1' => array('北海道',''), '2' => array('青森県',''), '3' => array('岩手県',''), '4' => array('宮城県',''), '5' => array('秋田県',''), '6' => array('山形県',''), '7' => array('福島県',''), '8' => array('茨城県',''), '9' => array('栃木県',''), '10' => array('群馬県',''), '11' => array('埼玉県',''), '12' => array('千葉県',''), '13' => array('東京都',''), '14' => array('神奈川県',''), '15' => array('新潟県',''), '16' => array('富山県',''), '17' => array('石川県',''), '18' => array('福井県',''), '19' => array('山梨県',''), '20' => array('長野県',''), '21' => array('岐阜県',''), '22' => array('静岡県',''), '23' => array('愛知県',''), '24' => array('三重県',''), '25' => array('滋賀県',''), '26' => array('京都府',''), '27' => array('大阪府',''), '28' => array('兵庫県',''), '29' => array('奈良県',''), '30' => array('和歌山県',''), '31' => array('鳥取県',''), '32' => array('島根県',''), '33' => array('岡山県',''), '34' => array('広島県',''), '35' => array('山口県',''), '36' => array('徳島県',''), '37' => array('香川県',''), '38' => array('愛媛県',''), '39' => array('高知県',''), '40' => array('福岡県',''), '41' => array('佐賀県',''), '42' => array('長崎県',''), '43' => array('熊本県',''), '44' => array('大分県',''), '45' => array('宮崎県',''), '46' => array('鹿児島県',''), '47' => array('沖縄県',''), ), // ソート順 'sort_order' => array( 'ASC' => array('昇順','ASC'), 'DESC' => array('降順','DESC') ), ); // 「年」のプルダウン $this->elements['years'] = array(); foreach(range(2007, date('Y')+1) as $y) { $this->elements['years'][$y] = array($y, $y); } // 「月」のプルダウン $this->elements['months'] = array(); foreach(range(1, 12) as $m) { $this->elements['months'][$m] = array(sprintf('%02d', $m), sprintf('%02d', $m)); } // 「日」のプルダウン $this->elements['days'] = array(); foreach(range(1, 31) as $d) { $this->elements['days'][$d] = array(sprintf('%02d', $d), sprintf('%02d', $d)); } } } // ============================================================= // 2009 kaz PHP自動作成お助けTOOL.(http://kazpgm.ddo.jp/) End // 修正BSDライセンス。 // =============================================================
その他:AppHtmlUtilクラスは自作のHtmlラジオボタン、リストボックス作成クラス。後でのせよう。
エレメント[0]は日本語、エレメント[1]は英語を登録している。使うときは'0'、'1'を切り替えて日本語、英語を切り分けている。
2010/01/20 23:00-01:30
6/10 20:00-20:30 viewをsmartyにした。