PHP 5.2.X では、以下は解析エラーで失敗します。
if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
$greater = function($left, $right) {
return $left > $right;
}
}
else {
$greater = create_function('$left, $right', 'return $left > $right;');
}
理由はおそらくかなり明白だと思うので、本当の問題は次のとおりです。
「5.3.0 に依存する定義を別のファイルに入れずに、バージョンが 5.3.0 以降の場合に条件付きでファイルを含めることなく、これを行う方法はありますか?」
私が定義したい関数がファーストクラスの名前付き関数である場合、それを別のファイルに入れることについての不満はほとんどありません。しかし、コードの可読性 (IMO) の観点からすると、無名関数の利点の 1 つは、そのソース テキストが、それを定義/使用するモジュールの本体に表示されるという事実です。定義を別のソース ファイルに置くと、そのメリットがほとんど失われます。