TOOL更新_お助けTOOLをzendframeworkに移植する方法を調査する。
1.お助けTOOLをzendframeworkに移植する方法を調査する。ToDoリストの(http://d.hatena.ne.jp/kazpgm/20090403/1238773943)暫定99.の調査
今後わかったことはここに書く。
基本的にhttp://framework.zend.com/manual/ja/index.html「プログラマ向けリファレンスガイド」から抜粋
・認証
zend:
Zend_Auth_Adapter_DbTableでチェックする。 (ログイン用テーブルを読んでチェックOK、NGを判定する) phpロジック、htmlは自動作成。
お助けTOOL:
自分でログイン用テーブルを読んでチェックOK、NGを判定している。 phpロジック、htmlは自動作成。
・DB
zend:
Zend_Dbを使用する。
・DBコネクト
$db = Zend_Db::factory('Pdo_Mysql', $parameters); $db->getConnection(); $db->setFetchMode(Zend_Db::FETCH_OBJ);
・複数件read
$result = $db->fetchAll($sql);
・1件read
$result = $db->fetchOne($sql);
・追加
$data = array( 'xxxxx' => 'yyyyy', ); $db->insert('TABLE', $data);
・更新
$data = array( 'xxxxx' => 'yyyyy', ); $n = $db->update('TABLE', $data, 'KEY = xxxxx');
・削除
$n = $db->delete('TABLE', 'KEY = xxxxx');
お助けTOOL:
PEAR DB(DB.php)を使用している。
・DBコネクト
$db =& dbCheck(DB::connect(DSN)); $db->setFetchMode(DB_FETCHMODE_ASSOC);
・複数件read
$result = $db->getAll($sql);
・1件read
$o = dbCheck($db->getRow($sql));
・追加
$columns = array( 'xxxxx' => 'yyyyy', ); dbInsert($db, 'TABLE', $columns);
・更新
$data = array( 'xxxxx' => 'yyyyy', ); dbUpdate($db, 'TABLE', $columns, array('KEY = '. $db->quoteSmart( 'xxxxx')));
・削除
dbDelete($db, 'TABLE', array('KEY = '. $db->quoteSmart( 'xxxxx') ));
・セッションデータ、リクエストデータ処理
zend:
Zend_Session::start(); $yyyy = new Zend_Session_Namespace('xxxxx'); $yyyy->zzz = 値; unset($yyyy->zzz); Zend_Session::writeClose(); $xxxx = $this->_getParam('xxxx', 'default'); $this->_setParam('xxxx','値'); $view = new Zend_View(); <=VIEW $view->xxxx = '値';
お助けTOOL:
session_start(); $_SESSION['zzz']のまま使っている。 unset($_SESSION['zzz']); $_REQUEST['xxxx']のまま使っている。
・入力チェック
zend:
コントローラクラス中のアクションメソッドに入力チェックをおく。 例) public function confirmAction() $validate = array( 'id' => array( 'Alnum' array('StringLength', 5, 10), 'presence' => 'required', 'message' => array( 0 => ... // Alnumに対するエラーメッセージ 1 => ... // StringLengthに対するエラーメッセージ ) ), ・・・ ); $data = $_POST; $filter = new Zend_Filter_Input(null, $validate, $data); if(!$filter->isValid()) { // エラー処理 }
お助けTOOL:
「AppCheckUtil」クラス(http://d.hatena.ne.jp/kazpgm/20090520/1242839505)使用
・メール
zend:
Zend_Mailを使用する。 $mail = new Zend_Mail('ISO-2022-JP');
お助けTOOL:
mb_send_mail使用して自作している。 <=PearのMailクラスを使ったこともある。こっちのほうが似ているかも。 $mailObject = Mail::factory("smtp", $params);
・VIEW(HTML)
zend:
指定なし。お助けTOOLと同じとする。(Zend_Viewあるけど「お助けTOOL」のほうがいいと思う。)
お助けTOOL:
htmlを<?php ?>を使用して作成。
・Control
zend:
URL/xxxx/yyyy.phpでxxxxコントローラ、yyyyアクションという命名規則あり。 <=すべてのリクエストをいったんフロントコントローラ (ドキュメントフォルダにあるindex.php)で受け取った上で その URL にもとづいたアクションコントローラに配送する。というもの。 たとえばURL/admin/company.phpだとしたら、 コントローラクラスはコントローラディレクトリに ファイル名は「AdminController.php」、クラス名は「AdminController」で作成。 さらに、コントローラクラスにはそのコントローラがサポートする アクションをメソッド名「companyAction」として定義する。 ※デフォルトでは「http://hostname/[コントローラ名]/[アクション名]/」の場合 [アクション名]Actionが呼び出される。
お助けTOOL:
URL/XXXX/YYYY.phpはxxxxフォルダYYYY.php
・エラーハンドリング
zend:
エラーが発生した場合になぜエラーになったか分かる。 <?php echo $this->exception->getMessage() ?> <pre><?php echo $this->exception->getTraceAsString() ?></pre> <pre><?php var_dump($this->request->getParams()) ?></pre>
お助けTOOL:
DBエラーのみログ出力するようにしてある。その他のエラーはphp.iniのとおり。
・ファイルへのアクセス
zend:
未調査
お助けTOOL:
$_FILES['sample_file']を使用。
・配列へのアクセス
zend:
未調査
お助けTOOL:
・例) <input type="checkbox" name="sample_array[] " value="1" id="check_ssample_array[]1" /> <label for="check_sample_array[]1">Super管理者</label> <input type="checkbox" name="sample_array[]" value="2" id="check_sample_array[]2" /> <label for="check_sample_array[]2">管理者</label> if (!empty($_REQUEST['sample_array']) && is_array($_REQUEST['sample_array'])) { $tempArray = dbQuotes($db, $_REQUEST['sample_array']); AppSrchUtil::setSqlStrSub1($conditions); $conditions .= " it.item13 in (". join(', ', $tempArray) . ')'; // 完全一致 }
・2重POSTのチェック
zend:
未調査
お助けTOOL:
現在2重POSTのチェックなし
- 2009/05/18 22:00 - 02:00
- 2009/05/20 01:00 - 02:00
- 2009/05/27 22:00 - 22:30 03:00 - 04:30