PHP

The function keyword in PHP is used to define functions, which are reusable blocks of code.

function

 PHPにおける functionキーワードは、関数を定義するために使用されます。関数は特定のタスクを実行するコードのブロックであり、コードの再利用性や可読性を向上させます。本記事では、functionキーワードの使い方や関連する概念について詳しく説明します。

基本的な関数の定義

構文

PHP

function 関数名(引数リスト) {
    // 関数の処理
    return 戻り値;
}
関数名
アルファベット、数字、アンダースコアで構成され、数字で始めることはできません。関数名は大文字小文字を区別しませんが、一般的には一貫性のために小文字が使用されます。
引数リスト
カンマで区切られたパラメータの一覧です。パラメータは関数に値を渡すために使用されます。
戻り値
returnキーワードを使用して関数から値を返すことができます。戻り値が不要な場合、returnは省略可能です。

例:基本的な関数

PHP

<?php
	function sayHello() {
		echo "こんにちは、世界!";
	}
	
	sayHello();
?>

こんにちは、世界!

引数を持つ関数

 関数は、外部から値を受け取るために引数を定義できます。

PHP

<?php
	function greet($name) {
		echo "こんにちは、$name さん!";
	}
	
	greet("太郎");
?>

こんにちは、太郎 さん!

デフォルト値付きの引数

 引数にはデフォルト値を設定することが可能です。デフォルト値は、関数が呼び出されたときに対応する引数が省略された場合に使用されます。

PHP

<?php
	function greet2($name = "ゲスト") {
		echo "こんにちは、$name さん!";
	}
	
	greet2();
?>

こんにちは、ゲスト さん!

型宣言と戻り値の型指定

 PHP 7以降、引数と戻り値に型宣言を追加できます。これにより、予期しない型のデータが渡されるのを防ぎます。

引数の型宣言

PHP

<?php
	function add(int $a, int $b) {
		return $a + $b;
	}
	
	echo add(5, 3);
?>

8

戻り値の型指定

PHP


<?php
	function add2(int $a, int $b): int {
		return $a + $b;
	}

	echo add2(6, 4);
?>

10

可変長引数

 関数が不特定多数の引数を受け取る場合、スプレッド演算子(...)を使用します。

PHP

<?php
	function sum(...$numbers) {
		return array_sum($numbers);
	}
	
	echo sum(1, 2, 3, 4);
?>

10

参照渡し

 引数を参照として渡すことで、関数内で引数の値を直接変更することができます。

PHP

<?php
	function increment(&$value) {
		$value++;
	}
	
	$num = 5;
	increment($num);
	echo $num;
?>

6

無名関数(クロージャ)

 functionキーワードは無名関数(匿名関数)を定義する際にも使用されます。無名関数は変数に代入したり、他の関数の引数として渡すことができます。

PHP

<?php
	$square = function($n) {
		return $n * $n;
	};
	
	echo $square(4);
?>

16

クロージャでの変数の取り込み

 useキーワードを使用して、無名関数の外部スコープの変数を取り込むことができます。

PHP

<?php
	$message = "こんにちは";

	$greet = function($name) use ($message) {
		echo "$message" . "、" . $name . "さん!";
	};
	
	$greet("花子");
?>

こんにちは、花子さん!

アロー関数

 PHP 7.4以降では、より簡潔に無名関数を定義できるアロー関数(fnキーワード)が導入されました。アロー関数では、外部スコープの変数が自動的に利用可能です。

PHP

<?php
	$square = fn($n) => $n * $n;

	echo $square(5);
?>

25

変数関数

 関数名を文字列として変数に代入し、その変数を関数として呼び出すことができます。

PHP

<?php
	function hello() {
		echo "こんにちは!";
	}
	
	$funcName = "hello";
	$funcName();
?>

こんにちは!

関数のスコープ

 関数内で定義された変数は、その関数内でのみ有効なローカル変数です。外部の変数にアクセスするには、globalキーワードや $GLOBALS配列を使用します。

PHP

<?php
	$number = 10;

	function displayNumber() {
		global $number;
		echo $number;
	}
	
	displayNumber();
?>

10

クラス内でのfunctionキーワード

 クラス内でメソッドを定義する際にも functionキーワードを使用します。この場合、アクセス修飾子(public、protected、private)を指定します。

PHP

<?php
	class Greeter {
		public function greet($name) {
			echo "こんにちは、$name さん!";
		}
	}
	
	$greeter = new Greeter();
	$greeter->greet("太郎");
?>

こんにちは、太郎 さん!

再帰関数

 関数が自分自身を呼び出すことを再帰といいます。再帰関数を使用することで、複雑な問題を簡潔に表現できます。

PHP

<?php
	function factorial($n) {
		if ($n === 0) {
			return 1;
		}
		return $n * factorial($n - 1);
	}
	
	echo factorial(5);
?>

120

注意点

関数の再定義禁止
同じ名前の関数を再定義しようとすると、Fatal errorが発生します。
名前空間の活用
大規模なプロジェクトでは、名前の衝突を避けるために名前空間を使用します。
ユーザー入力の検証
可変関数やコールバック関数を使用する際は、ユーザー入力を直接使用しないよう注意が必要です。

まとめ

 functionキーワードは PHPで関数を定義するための基本的な構成要素です。適切に関数を使用することで、コードの再利用性や可読性が向上します。また、無名関数やアロー関数、型宣言などの機能を活用することで、より堅牢でメンテナンスしやすいコードを書くことができます。