読者です 読者をやめる 読者になる 読者になる

Webデザインの勉強 ハロートレーニング 受講生のためのWebデザインの勉強補足ブログ

ユーザー定義関数を使用する


ユーザー定義関数

  • ユーザー定義関数には何度も使う処理をまとめておくことができます
  • 関数から処理結果を受け取ったり、関数に渡すパラメータに初期値をセットしておくことができます

ユーザー定義関数を使用する

  • 関数は「function」を使い、関数名をつけてカッコ「{}」の間に定義します
  • 関数を呼び出すときには、関数名の後にカッコ「()」をつけて呼び出します
  • パラメータに関数を渡して処理されるときは、カッコ「()」の中にパラメータをつけて定義し、呼び出すときにパラメータを指定して呼び出します
  • 関数で処理させた値を受け取りたいときには、「return」で返す値を指定します
  • 関数を定義するときに、パラメータに初期値を与えることができます
  • 関数を呼び出すときにパラメータを省略した場合は、定義時の初期値で処理されることになります
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>関数を使用する</title>
</head>
<body>
<?php
// ●パラメータのない関数
function disp_err_message() {
    echo '<p>エラーが発生しました</p>' . "\n";
}

disp_err_message();

// ●パラメータを使う関数
function disp_message( $string ) {
    echo '<p><b>' . $string . '</b></p>' . "\n";
}
disp_message( 'エラーです' );

// ●値を返す関数
function get_message( $code ) {

    switch ($code) {
        case 0:
            $message = '正常終了';
            break;
        case 1:
            $message = 'エラー';
            break;
        default:
            $message = 'エラー';
    }
    return $message;
}

echo '<p>終了メッセージ: '. get_message(1) . '</p>' . "\n";
 
// ●パラメータの既定値がある関数を定義する
function get_ret_message( $code = 0 ) {

    switch ( $code ) {
        case 0:
            $message = '正常終了';
            break;
        case 1:
            $message = 'エラー';
            break;
    }
    return $message;
}

// パラメータを指定して呼び出す
echo '<p>終了メッセージ:' . get_ret_message(1) . '</p>' . "\n";

// パラメータを省略してパラメータを呼び出す
echo '<p>終了メッセージ:'. get_ret_message() . '</p>' . "\n";

?>
</body>
</html>
  • 「get_ret_message」というユーザー定義関数を呼び出していますが、「function get_ret_message($code=0)」というように「$code」の規定値が「0」に設定されています
  • この関数を実行するときに「get_ret_message()」のようにパラメータを省略した場合は、$codeの値は「0」で処理されます



ユーザー定義関数を呼び出す

  • 「call_user_func()」関数でユーザー定義関数を呼び出します
  • 「"get_total_charge",10000);」のように関数名とパラメータを指定して実行します
  • 「get_total_charge(10000);」を実行することと同じです
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>ユーザ定義関数を呼び出す</title>
</head>
<body>
<?php
// 例1
// 関数を定義する
function get_total_charge( $kingaku ) {
    $total = $kingaku * 1.05;
    return $total;
}

  echo '<p>合計金額:' . call_user_func( 'get_total_charge', 10000 ) . '</p>' . "\n";
  echo '<p>合計金額:' . get_total_charge( 10000 ) . '</p>' . "\n";
?>
</body>
</html>

実行する関数名を動的に指定する

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>実行する関数名を動的に指定する</title>
</head>
<body>
<?php
// 関数を定義する
function f1( $prm ) {
  echo '<p>関数' . $prm . 'が実行されました。</p>' . "\n";
}

function f2( $prm ) {
  echo '<p>関数' . $prm . 'が実行されました。</p>' . "\n";
}

$num = 1;

  echo call_user_func( 'f'.$num, $num );
?>
</body>
</html>