ホームページ > バックエンド開発 > PHPチュートリアル > PHP 7.2 以降で非推奨となった PHP の `create_function()` を置き換えるにはどうすればよいですか?

PHP 7.2 以降で非推奨となった PHP の `create_function()` を置き換えるにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-21 21:01:22
オリジナル
859 人が閲覧しました

How Can I Replace PHP's Deprecated `create_function()` in PHP 7.2 and Later?

PHP 7.2 で create_function() が廃止される: 詳細

PHP 7.2 では、create_function() を通じて関数を動的に作成します。 ) 関数は非推奨になりました。これは、アプリケーションでこの機能に依存してきた開発者にとって課題となります。これに対処するために、最新の互換性のある代替手段を提供するソリューションを検討してみましょう。

次のコード スニペットを考えてみましょう。

$callbacks[$delimiter] = create_function(
    '$matches',
    "return '$delimiter' . strtolower($matches[1]);"
);
ログイン後にコピー

ここで、create_function() は動的に提供された文字列に基づく関数。ただし、PHP 7.2 以降では、このアプローチは推奨されなくなりました。

代替案: 匿名関数 (クロージャ)

PHP 7.2 との互換性のためにコードを書き直すには、次のようにします。クロージャとも呼ばれる匿名関数を利用できます。クロージャは、コード内で定義して使用できる匿名関数です。親スコープから変数にアクセスできるため、当面のタスクに最適です。

次のコードは、クロージャを使用して元のスニペットを書き換える方法を示しています。

$callbacks[$delimiter] = function($matches) use ($delimiter) {
    return $delimiter . strtolower($matches[1]);
};
ログイン後にコピー

Inこの Closure:

  • function($matches): 関数パラメータを定義します。これらは、正規表現からの一致を表す配列として受信されます。
  • use ($delimiter):** 親スコープの **$delimiter 変数が内で使用可能であることを宣言します。クロージャ。
  • return $delimiter 。 strto lower($matches[1]): $delimiter と最初に一致した要素の小文字バージョンを連結した、目的の結果を返します。

By匿名関数を使用すると、提供される機能を維持しながら、コードを PHP 7.2 以降にシームレスに移行できます。最新の PHP 標準に準拠しながら、create_function() を実行します。

以上がPHP 7.2 以降で非推奨となった PHP の `create_function()` を置き換えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート