ホームページ  >  記事  >  バックエンド開発  >  get関数に関するPHP5とPHP7の違い

get関数に関するPHP5とPHP7の違い

藏色散人
藏色散人転載
2021-10-28 16:21:321775ブラウズ

配列要素を動的関数名として取得する場合の PHP5 と PHP7 の違い

PHP5 と PHP7 では、変数を通じて関数/メソッド名を取得し、関数/メソッドを実行するときに、バージョンの違いによる違いがある可能性があり、解釈戦略が一貫していないため、同じコードを実行できません。

$a = ['add', 'sub'];
class Test
{
  public function add()
  {
    echo 1 + 2;
  }
}
$t = new Test();
$t->$a[0]();

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

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

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

get関数に関するPHP5とPHP7の違い

推奨される学習: 「PHP7 チュートリアル

以上がget関数に関するPHP5とPHP7の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.imで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。