【PHP】クロージャ(無名関数)の使い方

最近PHPでクロージャ(無名関数)を使う機会があったので、忘れないうちにことにメモしておきます。

 

クロージャ(無名関数)とは

クロージャとは無名関数とも呼ばれ、その名の通り名前がない関数だと自分は理解しています。

関数名は定義せず、環境を持っている関数です。ここで言う環境とは具体的に、変数と実際の処理のことです。

色々ネットでも調べてみました。

クロージャ(クロージャー、英語: closure)、関数閉包はプログラミング言語における関数オブジェクトの一種。いくつかの言語ではラムダ式や無名関数にて利用可能な機能・概念である。引数以外の変数を実行時の環境ではなく、自身が定義された環境(静的スコープ)において解決することを特徴とする
by Wikipedia クロージャ
無名関数はクロージャとも呼ばれ、 関数名を指定せずに関数を作成できるようにするものです。 コールバック パラメータとして使う際に便利ですが、用途はそれにとどまりません。
by 無名関数

やはりPHPではクロージャ=無名関数のようで、名前が定義されていない関数のことを指すようです。

 

 

クロージャの使い方

クロージャの一番簡単な例として、挨拶を返すサンプルがあります。

$aisatsu = function($val){return $val;};
echo "おはよう、{$aisatsu('太郎')}さん";

// 結果:
//  おはよう、太郎さん

 一行目に、「function($val)」というように名前無しで引数と内部処理だけ定義しています。

それを2行目で引数を自由に定義して利用しています。

 

もう少し踏み込んだ例として、以下のサンプルがあります。

$aisatsu = function($name){
  if (date("H") >= 6 and date("H") <= 10) {
    return "おはようございます、{$name}さん。";
  } elseif (date("H") >= 11 and date("H") <= 16) {
    return "こんにちは、{$name}さん。";
  } else {
    return "こんばんは、{$name}さん。";
  }
};


//使い方
// 6時から10時の場合
echo $aisatsu('太郎');
//> 結果:おはようございます。太郎さん。

// 11時から16時の場合
echo $aisatsu('太郎');
//> 結果:こんにちは、太郎さん。

// 16時から24時、または0時から5時の場合
echo $aisatsu('太郎');
//> 結果:こんばんは、太郎さん。

 関数を使った時間帯によって、返す挨拶が変化します。

クロージャのいいところは、関数を変数のように扱えるところと、何度も使いまわしできるのでソース量を少なくするのと役立ちます

また引数としてコールバック関数を利用することも可能です。

コールバック関数を使ったサンプルも記事にしたので、ご興味あれば見てみて下さい。

【PHP】コールバック関数の使い方・サンプル(レポート出力するデータを後から差し替える)



投稿日:2019-07-27    更新日:2019-08-08

[スポンサーリンク]

  
関連記事
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
勉強した内容を緩くメモする|JBの技術メモ
サイト内検索
プロフィール

プロフィール

[Name : じゃぶじゃぶ(@jbjb_2019)]
都内で社内SEをしているおじさん。
仕事で得られる知識だけでは限界を感じ、 WEBの勉強がてらITブログを開始。
サーバからWEBサイトまでフルスクラッチで開発しました。
現在は勉強のモチベーションを保つために活用中。
興味があることを雑記的に書いていきます。

[スポンサーリンク]

[スポンサードリンク]