【PHP7】無名関数の即時実行とfunctionのuse

はじめに

こんにちは、野村です。

今回は、PHP7の無名関数とかfunctionのuseについておさらいしてみました。

以前この記事を書いたとき、わけもわからず使ったので

PHP7を使っていろんな数列を書き出してみる
今回は、PHP7でいくつかの数列を書き出してみます。かつては一番親しんだ言語だったのだけど、数年触らなかったら随分進化してました。浦島太郎になった気分。

あらためて勉強してみようという魂胆です。

無名関数を即時実行

javascriptと似てます。

<?php
(function(){
  echo "test\n";
})():

実行結果

test

スコープしない

javascriptのようにスコープするのか実験。

<?php
$a = "test";
(function(){
  echo $a."\n";
})():

実行結果

PHP Notice:  Undefined variable: a in /home/jake/mumei.php on line 4

やはりできなかった。

globalを使う

そういえばglobalっていうのがあったな。

<?php
$a = "test";
(function(){
  global $a;
  echo $a."\n";
})():

実行結果

test

成功した。当然だ。

useを使う

useとかいうのを使ってみる。

<?php
$a = "test";
(function()use($a){
  echo $a."\n";
})():

実行結果

test

globalよりわかりやすい。

値渡し

そのままでは値渡しになる

<?php
$a = "test";
echo $a."\n";
(function()use($a){
  $a .= "aaa";
  echo $a."\n";
})():
echo $a."\n";

実行結果

test
testaaa
test

参照渡し

参照渡しにするときは「&」をつける。

<?php
$a = "test";
echo $a."\n";
(function()use(&$a){
  $a .= "aaa";
  echo $a."\n";
})():
echo $a."\n";

実行結果

test
testaaa
testaaa

おわりに

以上、PHP7の無名関数とかfunctionのuseについておさらいしてみました。

というわけで、今回はこれにて。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

野村 野村のプロフィール
メインPCはWindows10のVirtualBox上のFreeBSD。Linux/Unixの小ネタを求めて日々右往左往してたりする。