Parallels Desktop 25%OFFセール中Check!

【PHP入門】関数の基本 呼び出し方と作り方

PHPの関数

おはこんばんちわ。この記事では、PHPの関数を呼び出して利用する方法やユーザ定義関数の作成方法について解説します。

目次

関数とは

プログラム内では、同じ処理を何度も繰り返すことがあります。このように、繰り返し使用する処理をまとめて一つのブロックにして、名前をつけたものを関数といいます。

関数を使うことで、同じ処理を簡潔に書くことができますし、プログラム全体の見通しも良くなります。

関数は、以下のように定義します。

function 関数名(引数)
{
  処理;
  return 戻り値;
}

そして、次のように呼び出します。

//戻り値を変数に代入する場合
$var = 関数名(引数);

//戻り値を出力する場合
echo 関数名(引数);

例えば、以下のような関数を作ることができます。

//関数の定義(なんでも京都弁にする関数)
function kyoto($string)
{
  $result = $string . 'どすえ';
  return $result;
}

//関数を呼び出して、戻り値を変数に代入
$kyoto = kyoto('世の中には2種類の男しかいない。俺か、俺以外か');
//出力
echo $kyoto;

/*出力結果
世の中には2種類の男しかいない。俺か、俺以外かどすえ
*/

//※ローランド名言集より引用

この関数は、引数として受け取った文字列の末尾に「どすえ」を付け足して返します。その結果、ローランドが舞妓になるというとても画期的な関数です。

関数名のルール

PHPの関数名のルールは次のとおりです。

  • 使える文字は「文字」「数字」「アンダースコア_」。文字はアルファベットのほか、日本語なども使える。
  • 1文字目に数字は使えない。
  • アルファベットの大文字と小文字は区別されない
PR

無料で利用できるプログラミング学習サービスをお探しならば Code Lesson はいかがでしょうか。プロのエンジニアが監修した学習ロードマップで効率的に学習、AIに質問、最後にクイズで理解度をチェックできます。

組み込み関数

PHPには多くの組み込み関数が用意されています。これらの関数を使えば、自分で関数を作成しなくても簡単に実行できますので、とても便利です。いくつかの例を見てみましょう。

strlen()関数は、文字列の長さを得るための関数です。

$str = 'Hello World!';
echo strlen($str);

/*出力結果
12
*/

文字列「Hello world!」の長さ(文字数)を取得しました。スペースや記号も含めて12文字です。

date()関数は日付や時刻を書式化するための関数です。

echo date('Y/m/d');

/*出力結果
2023/04/26
*/

このコードを実行したときの日付が「年/月/日」という書式で出力されます。

PHPには、他にも便利な組み込み関数が用意されていますので、以下のページで確認してみてください。

ユーザー定義関数

ユーザー定義関数とは、開発者が自分自身で定義する関数のことです。

最もシンプルな関数

最もシンプルなユーザー定義関数は、次のようになります。

//関数の定義
function yeah()
{
  echo 'いえーい!';
}

//関数の呼び出し
yeah();

/*出力結果
いえーい!
*/

ただただecho 'いえーい!';を実行するだけの関数です。

戻り値を返す関数

いきなり出力するのがイヤなら、戻り値を返すこともできます。

//関数の定義
function yeah()
{
  return 'いえーい!';
}

//関数を呼び出して出力
echo yeah();

/*出力結果
いえーい!
*/

returnを使うと、関数の実行結果を値で返すことができます。これを戻り値といいます。返り値ともいいます。返り値だと返り血みたいで物騒なので、私は戻り値派です。

このようにすることで、戻り値を出力するだけでなく、変数に代入することも可能になります。$var = yeah();のようにね。

引数を取る関数

関数は引数を取ることができます。引数とは関数に渡す値のことです。

//関数の定義(なんでも京都弁にする関数)
function kyoto($string)
{
  $result = $string . 'どすえ';
  return $result;
}

//関数を呼び出して出力
echo kyoto('世の中には2種類の男しかいない。俺か、俺以外か');

/*出力結果
世の中には2種類の男しかいない。俺か、俺以外かどすえ
*/

このように、関数に値を渡すと、その値を使って処理をして結果を返すということができます。

複数の引数を取る関数

関数は複数の引数を取ることができます。

//関数の定義(方言にする関数)
function hougen($string, $region)
{
  if ($region == 'kyoto') {
    $result = $string . 'どすえ';
  } elseif ($region == 'osaka') {
    $result = $string . 'でんがな';
  } elseif ($region == 'sendai') {
    $result = $string . 'だっちゃ';
  } else {
    $result = $string;
  }
  return $result;
}

//関数を呼び出して出力
echo hougen('世の中には2種類の男しかいない。俺か、俺以外か', 'sendai');

/*出力結果
世の中には2種類の男しかいない。俺か、俺以外かだっちゃ
*/

ふたつ目の引数で方言の種類を選べるようにしてみました。

引数のデフォルト値を設定する

関数の定義をするときに、引数のデフォルト値を設定することができます。デフォルト値とは、引数として何も指定しなかったときに設定される値のことです。

//関数の定義
function hougen($string, $region = 'kyoto')
{
  if ($region == 'kyoto') {
    $result = $string . 'どすえ';
  } elseif ($region == 'osaka') {
    $result = $string . 'でんがな';
  } elseif ($region == 'sendai') {
    $result = $string . 'だっちゃ';
  } else {
    $result = $string;
  }
  return $result;
}

//関数を呼び出して出力(第二引数を指定しない)
echo hougen('世の中には2種類の男しかいない。俺か、俺以外か');

/*出力結果
世の中には2種類の男しかいない。俺か、俺以外かどすえ
*/

2行目$region = 'kyoto'とすることで、第二引数$regionのデフォルト値をkyotoに設定しました。すると、関数を呼び出すときに第二引数を指定しなければ、京都弁が出力されます。もちろん、第二引数を指定すれば指定した方言が出力されます。

このように、デフォルト値が設定されていれば、呼び出すときに引数を省略することができます。なお、デフォルト値が設定されていない引数を省略するとエラーになります。

引数と戻り値の型を設定する

関数の定義をするときに、引数と戻り値の型宣言をすることができます。

//関数の定義
function hougen(string $string, string $region = 'kyoto'): string
{
  if ($region == 'kyoto') {
    $result = $string . 'どすえ';
  } elseif ($region == 'osaka') {
    $result = $string . 'でんがな';
  } elseif ($region == 'sendai') {
    $result = $string . 'だっちゃ';
  } else {
    $result = $string;
  }
  return $result;
}

2行目のstring $stringは第一引数は文字列のみ受け入れるという意味です。string $regionも同じく、第二引数は文字列ですよという意味です。そして、: stringは戻り値が文字列だという意味です。

このように引数や戻り値の型を宣言することで、想定外のデータ型の値を受け取ったり返したりすることがなくなるので、セキュリティの向上に繋がります。

よく使う型

よく使う型は以下のとおりです。

  • string(文字列)
  • int(整数)
  • float(浮動小数点数)
  • bool(論理値)
  • array(配列)
  • object(オブジェクト)
  • mixed(あらゆる型)

union型

複数の型を許容したい場合は、|を使ってint|floatのように書きます。

厳密な型チェックをする設定

以上のように型宣言をすると、引数や戻り値の型をチェックしてエラーを返してくれると思うでしょ?残念ながらそうではないんです。PHPは動的型付けの言語です。なので、データの型が正しくなくても、自動的に型を変換してしまいます。親切なのかお節介なのか。

というわけで、厳密な型チェックをしたいならば、次のように設定します。

//厳密な型チェックをする設定
declare(strict_types=1);

//関数の定義
function hougen(string $string, string $region = 'kyoto'): string
{
  ...
}

これで、引数や戻り値の型が正しくなければエラーを発生するようになります。

名前付き引数

PHPの関数で名前付き引数が使えるようになりました。これはPHP 8.0以降で使える機能です。

PHP 8.0より前のバージョンでは、関数が複数の引数を取るときに、決められた順序どおりに引数を渡す必要がありました。名前付き引数を使うと、順序を意識せずに引数を渡すことが可能になります。

//関数の定義
function hougen($string,  $region)
{
  ...
}

$string = '世の中には2種類の男しかいない。俺か、俺以外か';

//関数を呼び出して出力(順番による引数指定)
echo hougen($string, 'osaka');
//関数を呼び出して出力(名前付き引数による引数指定)
echo hougen(string: $string, region: 'osaka');
//関数を呼び出して出力(名前付き引数による引数指定 順番入れ替え)
echo hougen(region: 'osaka', string: $string);

/*出力結果
世の中には2種類の男しかいない。俺か、俺以外かでんがな
世の中には2種類の男しかいない。俺か、俺以外かでんがな
世の中には2種類の男しかいない。俺か、俺以外かでんがな
*/

このように、関数を呼び出すときに引数の前に引数名:を記述するだけで、名前付き引数を使うことができます。引数の順序を入れ替えてもちゃんと動作していますね。

名前付き引数を使うメリットは次のとおりです。

  • 引数名により引数の意味がわかるのでコードの可読性が増す
  • 引数の順序を変えることができる
  • 特定の引数だけデフォルト値以外の値にしたいときに、他の引数の記述をスキップできる

さいごに

以上でーす。PHPの関数を使うことでプログラムの見通しが良くなり、コードの再利用性も高まります。まだ誰も作ったことのない関数をあなたが作って公開しましょう。尊敬の眼差しを浴びること請け合いです。

でわでわ

PR

無料で利用できるプログラミング学習サービスをお探しならば Code Lesson はいかがでしょうか。プロのエンジニアが監修した学習ロードマップで効率的に学習、AIに質問、最後にクイズで理解度をチェックできます。

PHPの関数

この記事が気に入ったら
いいね または フォローしてね!

シェアしてね

コメント

コメントする

目次