PHPで条件分岐する場合、if then else, switch 三項演算子などを使ってましたが、8系に上げたのでmatchを使ってみました。
コードが短くわかりやすくなったのと、一致しない場合エラーになるのでミスが防げるのがメリットかと思います。
< コード例 >
リクエストパラメータの検索種別に応じたSQLをセット
// == リクエストパラメータ == //
$stdt = $_POST["stdt"] ? $_POST["stdt"] : $_GET["stdt"];
$endt = $_POST["endt"] ? $_POST["endt"] : $_GET["endt"];
$tp = $_POST["tp"] ? $_POST["tp"] : $_GET["tp"];
// Ver8.0以上 //
// SQL //
$sql = match ($tp) {
"PSPO" => SQLStc::$SQL_PSPO,
"SCP" => SQLStc::$SQL_SCP,
"MAIL" => SQLStc::$SQL_MAIL,
"PF" => SQLStc::$SQL_PF,
"TABLE" => SQLStc::$SQL_TABLE,
"SCHEMA" => SQLStc::$SQL_SCHEMA,
"OSINFO" => SQLStc::$SQL_OSINFO,
"BLFTML" => SQLStc::$SQL_BLFTML,
"DDAD" => SQLStc::$SQL_DDADHIST,
"SCPTBL" => SQLStc::$SQL_SCPTBL,
"SCPTGT" => SQLStc::$SQL_SCPTGT,
"MAILCHECK" => SQLStc::$SQL_MAILCHECK,
"BOOK" => SQLStc::$SQL_BOOK,
"DDADAPSTATS"=> SQLStc::$SQL_DDADAPSTATS,
"DDADOPESTATS"=> SQLStc::$SQL_DDADOPESTATS,
"MYSQLPS" => SQLStc::$SQL_MYSQLPS,
"HTTPDPS" => SQLStc::$SQL_HTTPDPS,
"PHPFPMPS" => SQLStc::$SQL_PHPFPMPS,
"TOMCATPS" => SQLStc::$SQL_TOMCATPS,
"AMPTPS" => SQLStc::$SQL_AMPTPS
};
SQL文クラスにstaticな変数で各設定
class SQLStc {
//const SQL_PSPO_CS = "";
// phpoto data //
public static $SQL_PSPO = <<<EOM
SELECT
ID, CNT_PS, CNT_PS_NOIMG, CNT_OS_ALL, CNT_OS_TGT,
LEFT(TM_ADD, 16) AS TM_ADD
FROM
log_photo_count lp
WHERE
DATE(TM_ADD) BETWEEN :STDT AND :ENDT
ORDER BY ID DESC
EOM;
## 以下省略 ##