関数とは独自の処理を実行し結果を受け取る事ができる便利な機能です
関数は、引数を複数渡す事ができます
ユーザーが定義する関数をユーザー定義関数と言います
また、php自体が持っている関数を組み込み関数と言います
関数名の規則
関数名の有効な形式は先頭には半角英字かアンダースコアで始まります
2文字目以降は数字、文字などが利用できますが、スラッシュなどは利用できません
また処理する内容と関連のある名詞をつけましょう
function _getUserName() // ユーザー名取得
function getUserName()// 足し算
function addition()
引数とは
引数とは、関数へ値を渡す事ができます
引数はカンマ区切りで複数指定してあげる事が可能で左から右へ順番に呼ばれます
引数には、型を宣言する事ができ、参照渡し、デフォルト引数値、可変長引数リスト、名前付き引数(php80)をサポートしています
今回は、基本である、参照渡し、デフォルト引数値を学んでいきます
* 引数1と引数2を足した値を返す
* 引数に型宣言を行う
* @param int $num1
* @param int $num2
*/
function addition(int $num1 , int $num2)/**
* 第一引数は参照渡し
* 第二引数は値渡し
* @param int $reference
* @param int $number
*/
function addition(int &$reference , int $number)
{
// 値を代入
$reference = 10;
// 値を代入
$number = 20;
}$reference = 2;
$number = 5;addition($reference, $number);
// 10が出力される 参照渡しなので代入した値が上書きされる
echo $reference;
// 5が出力される 参照渡しではないので、値はそのままです
echo $number;
/**
* デフォルト引数値
* @param $is_enable
*/
function test($is_enable = true)
{
$is_enableはtrueが代入される
}
// 関数を実行 引数は渡さない
test();
戻り値
関数には戻り値を返す事ができます
また、関数の宣言時に戻り値の型名を指定する事ができます
戻り値の型を宣言する事により、より厳格にプログラムをコーディングできますので
必ず、戻り値の型を宣言しましょう
//変数$numに+1を加算して返す
return $num + 1;
}
function getName(): string
{
// 文字列を返す
return ‘テストさん’;
}function sample(): void
{
// voidは戻り値を返えさなくてOKです
}
なぜ関数を使うのか
理由は簡単です。
処理を一つに纏める事と、関数を複数箇所から呼び出す事ができるからです。
もし、関数を使わないで、複数のファイルで同じ処理をコーディングするとどうなるでしょうか?
不具合が発生した場合に、関数で処理を行っていた場合は、1箇所を直せばすみますが、
複数ファイルでコーディングした場合は、全ての箇所の修正が待っているからです
私自身、未熟な時は複数に同じ処理をコーディングしていたので、修正時に痛い目を味わいました
関数とは独自の処理を実行し、処理結果を返すための物です。
関数 function のサンプルプログラムで確認してみましょう
<?php
/**
* @param string $name
* @return string
*/
function getName(string $name): string
{
return 'こんにちは '. $name . 'さん';
}
echo getName('山田'). PHP_EOL;
/**
* 現在時刻を返す
* @return string
*/
function getNow(): string
{
return date('Y年m月d日 H時i分');
}
var_dump(getNow()). PHP_EOL;
/**
* 第一引数は参照渡し
* 第二引数は値渡し
* @param int $reference
* @param int $number
*/
function addition(int &$reference , int $number)
{
// 値を代入
$reference = 10;
// 値を代入
$number = 20;
}
$reference = 2;
$number = 3;
addition($reference, $number);
// 10が出力される
var_dump($reference). PHP_EOL;
// 3が出力される
var_dump($number). PHP_EOL;
上記のコードをコピペして下記のサイトで実際にPHPコードを実行してみましょう
本サイトでは、基礎的な学習は開発環境を構築しないで、webで実行します。
コピペで動作したら、今度は自分で実際にコードをトレースしてコーディングしてみましょう
効率的にプログラムを学習するなら必ず、手打ちすることです。
打つことで、アウトプットして覚えていきます。