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で調べると以下にも出ている。
引用すると
<?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に
なるという事ですね。
コメント