2023.10.10
【PHP】関数の定義

UnsplashSarah Dorweilerが撮影した写真

はじめに

この記事では関数の定義方法についてまとめています。

基本の定義方法に始まり、引数・戻り値のデータ型指定、引数への初期値の設定についてご紹介します。

基本の定義方法

まずは基本的な関数の定義と呼び出しです。

//定義
function [関数名](引数1, 引数2){
  //処理
  return [戻り値]
}

//呼び出し
[関数名](引数1, 引数2);          //戻り値無しの場合
$変数 = [関数名](引数1, 引数2);  //戻り値有りの場合

例)

//定義
function add($a, $b){
  $total = $a + $b;
  return $total;
}

//呼び出し
$result = add(5,3);

引数・戻り値のデータ型を指定する

引数と戻り値のデータ型を指定すると保守性が向上します。

呼び出し方については特筆することが無いので、省略します。

//定義
function [関数名](データ型 引数1, データ型 引数2):戻り値のデータ型{
  ~~処理~~
}

※データ型を指定しない場合は「mixed」を記述する

例)

//定義
function introduce(string $name, int $age):array{
    $data = [
        "name" => "私の名前は${name}です。",
        "age" => "歳は${age}です。"
    ];
    return $data;
}

引数に初期値を設定する

関数を呼び出す際、引数には必ず何かしら値を渡す必要があります。

しかし、引数に初期値を設定することで回避できます。

引数に初期値を設定するには以下のように書きます。

function [関数名](引数1 = 初期値1, 引数2 = 初期値2){
  ~~処理~~
}

例)

function calcPriceWithTax($price, $tax = 0.08){
  $result = $price * (1 + $tax);
  return $result;
}

可変長引数を使う

使う機会は少ないかもしれないですが、覚えておくと便利。。かも!

可変長引数とは

事前に必要な引数の数がわからない時に活躍するのが「可変長引数」です。

関数の定義時に可変長引数を設定する

//定義
function add(int ...$numbers){  //⇐複数の引数を$numbersで受け取る
  $total = 0;
  foreach($numbers as $number){
    $total += $number;
  }
  return $total;
}

//呼び出し
$result = add(1, 2, 3, 4, 5); //⇐複数の引数を渡す
echo $result;

引数の参照渡し

引数の参照渡しをしたい場合には以下のように、引数の前に「&」をつけます。

function add(&$a, &$b){
  ~~処理~~
}

関数内でグローバル変数を使う

基本的に「関数の外で定義した変数(グローバルスコープの変数)は関数の外」で、「関数の中で定義した変数(ローカルスコープの変数)は関数の中」でしか使えないのですが、

関数の外で定義した変数を関数の中で使うコードの例です。

$num = 3;        //⇐グローバルスコープの変数
function add(){
  global $num;   //⇐$numを関数内で使う宣言
  return $num+10;
}
$result = add();
echo $result;

グローバルスコープの変数を関数内で使うには関数内で「global」を使いグローバルスコープを使う宣言をします。

関数の使い方については以上です!