PHP関数のデフォルト引数

phpでプログラミングをしている時、関数を使う事がある。

functionというヤツである。今まで知らなかったが

以下のような書き方もできる、らしい。

<?php

//セッションの開始

session_start();

//入力値の取得・検証・加工

$s_name = chkString($_POST[“s_name”], “名前”);

$s_mail = chkString($_POST[“s_mail”], “メールアドレス”, true);

$s_message = chkString($_POST[“s_message”], “メッセージ”);

//入力値をセッション変数に格納

$_SESSION[“s_name”] = $s_name;

$_SESSION[“s_mail”] = $s_mail;

$_SESSION[“s_message”] = $s_message;

//入力値の検証・加工

function chkString($temp = “”, $field, $accept_empty = false) {

//未入力チェック

if(empty($temp) AND !$accept_empty){

echo “{$field}には何かを入力してください。”;

exit;

}

//入力内容を安全な値に

$temp = htmlspecialchars($temp, ENT_QUOTES, “UTF-8”);

//戻り値

return $temp;

}

?>

お分かりになっただろうか。chkStringという関数を定義して

引数を渡しているんだがデフォルトの引数値を定義している。

つまり$_POST[“s_name”]や$_POST[“s_message”]が

空の時はデフォルトの$temp = “”になる。何か入ってれば

その文字列になるという事のようである。

またメールアドレスにはchkStringで3番目の引数を

trueにしている。これによりデフォルトの

$accept_empty = falseがtrueになる。

その次にif文で$tempの中が空であり、かつ

$accept_emptyがfalseの時には

{$field}には何かを入力してください。という

メッセージを出し処理が終了する。

一方上記のif文に当てはまらない時、

htmlspecialchars関数を行いサニタイズして

その値($temp)を返してあげる。

ここまでがchkString関数。

あとは$s_nameや$s_mailなどをセッション変数に格納。

そして次に何か処理をするのだろうがそこは割愛。

このようなPHP関数のデフォルト引数の仕組み

を知らなかったため目からウロコだった。

webで調べると以下にも出ている。

https://www.php.net/manual/ja/functions.arguments.php#functions.arguments.default

引用すると

<?php

function makecoffee($type = “cappuccino”)

{

    return “Making a cup of $type.\n”

}

echo makecoffee();

echo makecoffee(null);

echo makecoffee(“espresso”);

?>

上の例の出力は以下になる。

Making a cup of cappuccino.

Making a cup of .

Making a cup of espresso.

何も指定しなければデフォルトのcappuccinoになり

nullを指定すれば何も入らない。

そしてespressoを指定すれば$typeはespressoに

なるという事ですね。

新宿 味噌屋八郎商店に行った

この前の日曜日、友人と新宿をぶらついてて

ラーメン屋に行こう、となった。

小滝橋通りにある「味噌屋八郎商店」に行く。

立地がなんとラーメン二郎の隣にある。

二郎と真っ向勝負とは強気ですね。

この辺りは焼肉屋やラーメン屋がひしめいていて

いわゆる”激戦区”。少しでも人気がない店は

すぐになくなってしまう、入れ替わりが激しい

地区ともいえる。そんな中、二郎の隣なのだから

嫌でも期待が高まろうというもの。

店頭の看板には”うまいぜ。ベイビー”という文字が。

ネットで調べるとこの店は神奈川県秦野にある

“なんつっ亭”の古谷氏が手掛ける味噌ラーメン

専門店のお店だったらしい。

”うまいぜ。ベイビー”というのはその古谷氏

の口癖で謳い文句だとか。

店に入ってメニューを見ると

味噌らーめん、辛味噌らーめん、トマト味噌らーめん、

カレー味噌らーめん、味噌つけ麺の5種類がある。

自分は味噌つけ麺の特盛をオーダー。嬉しい事に

味噌つけ麺は並・大・特盛が全て同一料金。

その写真がこれ。

横から。

スープのみの写真。

味は結構個性的。豚骨スープと独自にブレンドした

北海道特製味噌が効いている。特盛りなのに

あっという間に完食。美味しかった。

ごちそうさんでした。

後で聞いてみると友人の評価も高かった。