PHPスクリプトのユーザー定義関数の作成方法

関数とはある処理のプログラムがまとめられているもので、多くのプログラミング言語で言語ごとに用意されている組み込み関数があり、PHPスクリプトも多くの関数が用意されています。

何か複雑なコードを書いて処理をするプログラムがあって関数として定義しておけば、他の部分でもう一度その処理が必要になった時には、また複雑なコードを書かなくとも関数を呼び出してあげることで簡単に実行することができます。

そんな便利な関数ですが、自分で定義して独自の関数を作ることができます。

ここではPHPスクリプトのユーザー定義関数の作成方法をご紹介します。


PHPのユーザー定義関数


PHPでユーザー定義関数を作成するには、functionの記述の後に半角スペースを空けて関数名を記述して、関数名の後に丸括弧「()」として定義します。あとは波括弧「{}」の中に関数に関する処理を書いていきます。

<?php
function 関数名(){
    //処理を記述
}
?>


例えば、単純に「Hello」という文字を出力するだけの関数を作成してみます。
以下のようなプログラムになります。

<?php
function hello(){
    echo "Hello";
}
 
hello();
?>

関数名は大文字と小文字は区別されないので「hello()」も「Hello()」も同じ関数として認識されます。
プログラムに同じ関数があるとエラーが発生しますので気をつけてください。

最後の行の「hello();」は関数の呼び出しです。
プログラム中でHelloと挨拶する部分で関数を呼び出してあげればHelloという挨拶が表示されます。

要するに関数を作っておいて、作成した関数名を必要な時に必要な場所で呼び出してあげるといった流れです。


引数を利用した関数の作成


引数を利用した関数も作成できます。
引数は1つでもいいですし、カンマ区切りで複数設定することが可能です。

<?php
function 関数名(引数1,引数2,・・・){
    //引数を使った処理を記述
}
?>


また引数は変数のように名前をつけます。
その引数の名前を関数の処理の中で使ってプログラムを作っていく流れです。

サンプルとして掛け算(multiplication)をする関数を作成してみます。

<?php
function multiplication($num1, $num2){
    return $num1 * $num2;
}

$result = multiplication(5, 8);
echo $result;
?>

2つの数字を引数「$num1」と「$num2」として関数内で掛け算するプログラムを書いて処理します。関数内の処理は「return」とすることで処理の結果を返すことができます。要するにmultiplicationという関数は2つの数値を掛け算してその結果を返す関数になります。
あとは掛け算をすることがある時にmultiplicationの関数を呼び出して、引数に掛け算する2つの数字をカンマ区切りで記述します。処理の結果として「result」という変数に格納しておいて、表示させるところでechoで出力します。

もう少し踏み込んでみましょう。

例えば、入力フォームでユーザーの名前が入力されていない場合は「匿名」とするようなプログラムで見ていきます。

入力内容をchack.phpに飛ばすと仮定してHTMLを書いていきます。

HTML

<form method="post" action="chack.php">
    <input type="text" name="name">
    <input type="submit" value="Send">
</form>


PHP側では関数に受け取った値を引数に当てはめて処理を行っていきます。

PHP

<?php
function greeting($nickname){
    if($nickname == ""){
        $nickname = "匿名";
    }
    echo $nickname . "さん、こんにちは。<br>";
}

$uname = htmlspecialchars($_POST['name']);
greeting($uname);
?>

変数「uname」に入力フォームからの値を受け取ります。「htmlspecialchars()」はサニタイジングでセキュリティ対策です。
関数に変数の値を入れてあげて関数の処理が実行されます。

他にも、引数にはデフォルト値を設定することもできます。

<?php
function greeting($nickname = "匿名"){
    echo $nickname . "さん、こんにちは。<br>";
}

greeting("山田"); //結果:山田さん、こんにちは。
greeting(); //結果:匿名さん、こんにちは。
?>


関数の引数で変数に匿名を代入しておいてこれをデフォルト値とします。
もし関数の呼び出しで引数が入力されていたら関数内の引数は呼び出された時の値が入り、関数の呼び出し時に何も入力されていなかったらそのままデフォルト値で処理が実行されるという流れです。

ちなみに関数内で引数として利用している変数は関数の外で利用することができません。
ローカル変数という扱いになるので、外で変数を呼び出しても変数が定義されていないと認識されてエラーとなります。


まとめ


プログラム上で何度も同じような処理をさせることがある場合、それが複数行で複雑なプログラムであるのであれば、関数として処理をまとめておいて必要な時に呼び出してあげれば何度も同じプログラムを書かずに済みますし、シンプルでみやすいコードを書くことができるでしょう。
また、その処理を修正する場合でも何箇所も修正せずとも関数のプログラムだけを修正すれば、すべての箇所を修正することもできます。

初めてユーザー定義関数を作るという方には、最初は難しく感じるかもしれませんが、使いこなしてくると大変便利ですので、簡単な関数でもいいので実際にいろいろ作ってみて慣れるようにしましょう。