一目でわかるPHP無名関数!使い方を簡単解説

PHPを学び始めた頃は、関数には名前がついていると思っていました。

しかし、関数でも名前がついていないものもあります。

それが無名関数と呼ばれるものです。

今回は無名関数について以下の内容でお話をしていきます。

【基本】無名関数について
【基本】無名関数使用のメリット
【応用】無名関数の使い方

わかりやすく解説しますので、是非読んでください。

無名関数とは

無名関数は、クロージャとも呼ばれます。

関数は名前を付けて作成したり、呼び出したりしますよね。

しかし、この関数は名前をつけなくても呼び出すことが出来るのです。

因みにPHP5.3以上で対応、つまりそれより前のバージョンでは使用できません。

記述としては以下のようになります。

function(★引数★){

//処理

};

通常functionの後に関数名が入りますが、無名関数の場合はそれがありません。

また通常の関数と同じように、引数を渡すことが出来ます。

続いて、どんな場合に使用するのか次章で考えていきます。

無名関数の使い道

無名関数はどんな時に使用して、どんなメリットがあるのでしょうか。

関数名の乱立を防ぐ

開発を進めていると、その開発規模が大きければ大きいほど関数数が多くなります。

どんな小さな機能関数にも名前を付けていると混乱の元になります。

また、重複しない関数名や機能に関係する名前を考えるのも大変です。

無名関数はその場限りしか使わないため、名前をつける必要がないので重宝します。

コールバック関数を指定できる

無名関数を使うと、コールバック関数を使用する事が出来ます。

ある関数の処理中や処理が終わってから別の関数を呼び出す時、あらかじめ別の関数を渡しておきます。

この時、関数に渡す別の関数をコールバック関数と呼びます。

無名関数のメリットについて、何となくおわかりいただけたでしょうか。

無名関数を使ってみよう

続いて、実際に無名関数を使用してみましょう。

無名関数の引数に値を渡す

以下、無名関数の引数に値を渡すサンプルコードです。

<?php
// 手順1
$samurai = function($test_val){
echo($test_val. "です");
};
//手順2
$samurai("侍エンジニア塾");

【手順1】で変数$samuraiに無名関数を代入します。

変数$samuraiに無名関数を代入しただけでは実行されません。

【手順2】で$samuraiに代入した無名関数が実行されます。

実行の際に「侍エンジニア塾」という値が、無名関数に渡されます。

無名関数の中では、$test_valの中に「侍エンジニア塾」という値が入っています。

結果
侍エンジニア塾です

渡された値が、無名関数の中で処理をされて表示されることがわかりました。

無名関数の引数に関数を渡す

以下、無名関数の引数に関数(コールバック関数)を渡すサンプルコードです。

<?php
// ①コールバック関数
function no_name_callback(){
    return "侍エンジニア塾";
}

// ②コールバック関数を実行する関数
function no_name($callback){
    echo $callback(). "です";
}

// ③関数を実行、コールバック関数を渡す
no_name("no_name_callback");

①コールバック関数と、②コールバック関数を渡され処理をする関数を記述します。

③で実行となります。

結果
侍エンジニア塾です

コールバック関数が実行されて、値が表示されることがわかりました。

まとめ

今回は、PHPの無名関数について解説しました。

得にコールバック関数は無名関数を使用する大きなメリットです。

この機会に是非理解しておいて頂きたいです。

それでは、また。

LINEで送る
Pocket

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

つぶらや

つぶらや

独学PG&SE、東京在住30代女性。
誰でもプログラマーになれるがモットーで、わかりやすい記事を目指しています。