アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHP 勉強中です。

POST もしくは、GET で値を取得して、
空の時は、第 4 引数より、以下配列の 0 もしくは、空文字を含むように書いてます。

もう少しコードをまとめたいと考えており、特に多次元配列まとめたいのですが、
filter_input 第 4 引数で使用するには、$default_options にキー、バリューを追加しても、
処理に困る感じです。

何か良いまとめる方法はありませんか ?
また、それ以外でも処理がまとまる箇所があれば、ご教授頂ければ幸いです。

宜しくお願いいたします。


$default_options = [
'options' => [
'default' => '0',
]
];

$empty_options = [
'options' => [
'default' => '',
]
];

// POST を受け取り、値の有無を確認
if ( $_SERVER['REQUEST_METHOD'] === 'POST' ) {

$_01 = filter_input( INPUT_POST, '_01', FILTER_UNSAFE_RAW, $default_options );
$_02 = filter_input( INPUT_POST, '_02', FILTER_UNSAFE_RAW, $default_options );
$_03 = filter_input( INPUT_POST, '_03', FILTER_UNSAFE_RAW, $empty_options );

// GET 受け取り用 URL パラメータを受け取り、値の有無を確認
} else {

$_01 = filter_input( INPUT_GET, '_01', FILTER_UNSAFE_RAW, $default_options );
$_02 = filter_input( INPUT_GET, '_02', FILTER_UNSAFE_RAW, $default_options );
$_03 = filter_input( INPUT_GET, '_03', FILTER_UNSAFE_RAW, $empty_options );

}

A 回答 (1件)

ちょっとすっきりさせるなら


分岐を必要最低限にして、filter_inputの部分を関数化するのはいかがでしょうか?

get_inputの第3引数は省略すると空文字、第4引数省略字はFILTER_UNSAFE_RAWを使って
filter_inputを実行するようにしています。


<?php
function get_input($type, $variable_name, $default_value='', $filter=FILTER_UNSAFE_RAW){
  $options = ['options' => [ 'default' => $default_value, ]];
  return filter_input($type, $variable_name, $filter, $options);
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  $type = INPUT_POST;
} elseif ($_SERVER['REQUEST_METHOD'] === 'GET') {
  $type = INPUT_GET;
} else {
  // POST、GET以外のエラー制御が必要ならここに書く
}
$_01 = get_input($type, '_01', '0');
$_02 = get_input($type, '_02', '0');
$_03 = get_input($type, '_03');
    • good
    • 0
この回答へのお礼

ご回答頂きありがとうございました。
スッキリしましたし、メンテナンスも向上したと思います。
勉強になります。

お礼日時:2019/07/31 20:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!