blog

PHP5とPHP7の違いは、動的な関数名の配列要素をフェッチする

PHP5とPHP7で関数/メソッド名を変数から取得して実行する場合、バージョン間で有効でない解釈ポリシーのために同じコードが動作しないことがあります。上記の例は、PHP5.6 では正常に動作しますが、...

Mar 17, 2020 · 2 min. read
Share this

PHP5とPHP7で関数/メソッド名を変数から取得して実行する場合、 バージョン間で解釈ポリシーが異なるため、同じコードが動作しないことがあります。

代表例

$a = ['add', 'sub'];
class Test
{
 パブリック関数add()
 {
    エコー1+ 2;
  }
}
$t = new Test();
$t->$a[0]();

上記の例は、PHP5.6 では正常に動作しますが、PHP7 では Fatal error: Function name must be a string がスローされます。 これは、PHP5 でt->t->a0 を実行する際に、まず $a[0] を実行して要素の値を取得し、それからオブジェクト固有のメソッドを実行するからです。

PHP7 ではt->t->a が最初に実行され、エラーが発生して実行が中断されます。PHP7 で正しく実行させたい場合は、t->{a[0]}() に変更する必要があります。

![]

上記のコンテンツは、時間の進歩で多くのPHPerは常にいくつかの問題やボトルネックに遭遇するあなたを助けるために願って、ビジネスコードは、方向感覚よりも多くを記述するために、私は、材料の数を照合している改善するためにどこから始めればわからないが、これらに限定されない:分散アーキテクチャ、高いスケーラビリティ、高性能、高同時性、サーバーのパフォーマンスチューニング、TP6、laravel、YII2、Redis、Swoole、Kafka、Mysqlの最適化、シェルスクリプト、マイクロサービス、Nginxおよび他の多くの知識ポイント高度な乾物は無料で共有することができます。Swoole、Swoft、Kafka、Mysqlの最適化、シェルスクリプト、Docker、マイクロサービス、Nginxおよび他の多くの知識ポイント高度な高度な乾物は、みんなと共有するために自由にする必要があり、ここを突く必要があります!

Read next

バイトフリップブラックボックス

車はああを要約するために、もちろん転覆し、そうでなければ再び転覆は離れて駆動することができますか? 質問1バイナリツリー アルゴリズムJSアルゴリズム木トラバーサル クラスノード クラスノード クラスノード{ {

Mar 17, 2020 · 3 min read