ツイート
シェア
LINEで送る
B! はてぶでブックマーク
Pocketでブックマーク
RSSフィード

PHP8, create_function()の廃止。無名関数を使おう!

php
イラストダウンロードサイト【イラストAC】
の画像をもとに加工しています。

非推奨になっていたcreate_function()がPHP8で廃止されました。無名関数を知っている人にはどうでもいいことですが、ソースコードに残っていると致命的なエラーになって動きません。

何を今さらな情報ですが、もしまだ使っているようなら辞めましょうという話です。

無名関数が出てくる前まで、定義するまでもない関数をcreate_function()を使って書くことができました。

<?php

$c = create_function('$a, $b', 'return $a + $b;');

echo $c . PHP_EOL;
echo $c(3, 4) . PHP_EOL;
実行結果
lambda_1
7

ただ、create_functionは関数の処理内容を文字列で作成する必要があり、ちょっと複雑なことは書きにくいものでした。

これと同じことは無名関数を使ってもできます。

<?php

$c = function($a, $b) {
	return $a + $b;
};

echo $c(3, 4) . PHP_EOL;
実行結果
7

create_function()はPHP7.2で非推奨になっていて、そのときにすでに無名関数に換えた人も多いはずです。

それを逃した人はPHP8ではエラーになります。

修正はかんたんなので、まだPHP7の人でも事前に直しておきましょう。

PHP公式ドキュメント

Function - create_function

無名関数

前の投稿
PHP8, エラー制御演算子(@)でErrorは関係なく出力される
PHP8, 外部リソースを操る拡張機能のコアをリソース型変数からクラスオブジェクトへ移行
次の投稿

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください