現状の問題を以下に箇条書きでまとめさせていただきました。
何卒ご一読いただけますと幸いです。
##環境
PHP 5.3
Zend Framework 1.11.14
MySQL 5.6.14
##やりたいこと
DBの更新処理を行った時だけグローバル変数の$_REQUESTをMySQLに履歴として保存したい
→更新処理を行ったアクション限定でDB保存処理を行いたい
(各アクションにDB登録処理を書くのではなく、親クラスで更新処理を行ったことを判定して$_REQUEST登録処理を行いたい)
##現状把握・問題
更新処理を行ったアクションが統一されていない(registActionだったりupdateActionだったりする)
##思いついた案
- HTTPメソッドがPOSTで送られるもので絞り込んで登録
→indexActionやconfirmActionでPOSTされているので、ホワイトリストで絞り込みが必要
→ホワイトリストの管理運用が必要になるので、できればやりたくない
- アクションでホワイトリストを作成して絞り込んで登録
→ホワイトリストの管理運用が必要になるので、できればやりたくない
- 保存する各アクションにフラグを設定する
→現存のアクションがあまりに多く、今後追加が必要になることもあり、できればやりたくない
#これができれば実現できそうだと思うもの
- PHPのプロセス内でUPDATE文を実行したことを検知してDBに登録する
これぐらいしか案が思いつかず、途方に暮れております・・・
ソースで書くとこんなイメージです。
- 子クラスその1
class Ko_First extends Oya{ public function indexAction() { //ここの$_REQUESTは登録しない(HTTPメソッドがPOST) } public function registAction() { //ここの$_REQUESTは登録したい(HTTPメソッドがPOST) } }
- 子クラスその2
class Ko_Second extends Oya{ public function indexAction() { //ここは登録しない } public function confirmAction() { //ここの$_REQUESTは登録しない(HTTPメソッドがPOST) } public function updateAction() { //ここの$_REQUESTは登録したい(HTTPメソッドがPOST) } }
- 親クラス
class Oya{ ・・・ public function postDispatch() // $_REQUESTをDBに登録する処理 } }
postDispatch()はAction後に行われるメソッドです。
参考になればどんな内容でもいいので、アドバイス頂けましたら幸いです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/13 02:48
2017/04/13 03:38 編集
2017/04/13 13:42