配列要素を動的関数名として受け取ることに関する PHP5 と PHP7 の違い

藏色散人
リリース: 2023-02-17 14:04:02
転載
2216 人が閲覧しました

PHP5 および PHP7 で変数を介して関数/メソッド名を取得して関数/メソッドを実行する場合、バージョン間の解釈戦略の違いにより、同じコードが実行されない場合があります。

$a = ['add', 'sub'];
 
class Test
{
  public function add()
  {
    echo 1 + 2;
  }
}
 
$t = new Test();
$t->$a[0]();
ログイン後にコピー

上記の例は、PHP5.6 では正常に実行できますが、PHP7 では致命的なエラーがスローされます: 関数名は文字列である必要があります。これは、PHP5 で $t->$a0 を実行すると、最初に $a[0] が実行され、要素の値が取得されてから、具体的なメソッドが取得されるためです。オブジェクトの部分が実行されます。

PHP7 では、$t->$a が最初に実行されるため、エラーがスローされ、実行が中断されます。 PHP7 で通常どおり実行する必要がある場合は、$t->{$a[0]}() に変更する必要があります。

具体的な違いについては、次を参照してください。

配列要素を動的関数名として受け取ることに関する PHP5 と PHP7 の違い

プログラミング関連のコンテンツの詳細については、php 中国語 Web サイトに注意してください。 プログラミング入門コラム!

以上が配列要素を動的関数名として受け取ることに関する PHP5 と PHP7 の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!