Heim >Backend-Entwicklung >PHP7 >Unterschiede zwischen PHP5 und PHP7 hinsichtlich der Verwendung von Array-Elementen als dynamische Funktionsnamen

Unterschiede zwischen PHP5 und PHP7 hinsichtlich der Verwendung von Array-Elementen als dynamische Funktionsnamen

藏色散人
藏色散人nach vorne
2020-02-29 13:44:192627Durchsuche

Beim Ausführen von Funktionen/Methoden durch Abrufen von Funktions-/Methodennamen über Variablen in PHP5 und PHP7 kann es sein, dass derselbe Code aufgrund unterschiedlicher Interpretationsstrategien zwischen den Versionen nicht ausgeführt wird.

Beispiel

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

Das obige Beispiel kann normal unter PHP5.6 laufen, aber unter PHP7 wird ein schwerwiegender Fehler ausgegeben: Der Funktionsname muss eine Zeichenfolge sein. Dies liegt daran, dass bei der Ausführung von $t->$a0 zuerst $a[0] ausgeführt wird, der Elementwert abgerufen wird und dann die spezifische Methode des Objekts ausgeführt wird.

Unter PHP7 wird $t->$a zuerst ausgeführt, wodurch ein Fehler ausgegeben und die Ausführung unterbrochen wird. Wenn Sie es normal unter PHP7 ausführen müssen, müssen Sie es in $t->{$a[0]}() ändern.

Spezifische Unterschiede finden Sie unter:

Unterschiede zwischen PHP5 und PHP7 hinsichtlich der Verwendung von Array-Elementen als dynamische Funktionsnamen

Weitere programmbezogene Inhalte finden Sie auf der chinesischen PHP-Website Einführung in die ProgrammierungKolumne!

Das obige ist der detaillierte Inhalt vonUnterschiede zwischen PHP5 und PHP7 hinsichtlich der Verwendung von Array-Elementen als dynamische Funktionsnamen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Vorheriger Artikel:Wie probiert Wamp PHP7 aus?Nächster Artikel:Wie probiert Wamp PHP7 aus?