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で調べると以下にも出ている。

PHP: 関数の引数 - Manual

引用すると

<?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に

なるという事ですね。

コメント

タイトルとURLをコピーしました