Vorgeschlagene RFCs finden breite Mehrheit

PHP: Lösung für kurze Pfeilfunktionen genehmigt
Keine Kommentare

Das PHP-Team hat kürzlich die von Nikita Popov, Levi Morrison und Bob Weinand in einem RFC vorgeschlagene Lösung für kurze Pfeilfunktionen genehmigt.

Anonyme Funktionen in PHP können recht ausführlich sein, auch wenn sie nur eine einfache Operation ausführen. Dies ist zum Teil auf eine große Menge an syntactic boilerplate und zum Teil auf die Notwendigkeit zurückzuführen, verwendete Variablen manuell importieren zu müssen. Dies macht Code mitunter schwer lesbar und unverständlich.

PHP RFC: Pfeilfunktionen 2.0

Ein RFC schlug eine kürzere Syntax für dieses Muster vor. Mit 51 Ja-Stimmen (8 waren dagegen) wurde nun in der Abstimmung das „Hinzufügen von Pfeilfunktionen wie in PHP 7.4 beschrieben“ genehmigt.

Ein Beispiel aus der Vorgängerversion, der den Deklarationsaufwand ganz gut beschreibt.

 
function array_values_from_keys ( $ arr ,  $ keys )  { 
    return  array_map ( Funktion  ( $ x )  use  ( $ arr )  {  return  $ arr [ $ x ] ;  } ,  $ keys ) ; 
}

Die Schließung führt eine einzelne Operation aus und besteht aus 8 Zeichen, erfordert jedoch 30 andere Zeichen (außer Leerzeichen). Dies bedeutet, dass ungefähr 79 % des Codes der Schließung Overhead sind. Diese zusätzlichen Zeichen werden auch als „Boilerplate“ bezeichnet. Der RFC schlug Pfeilfunktionen vor, um die Anzahl der Boilerplates durch eine kürzere Syntax zu reduzieren und verwendete Variablen implizit aus dem äußeren Bereich zu importieren. Die Verwendung von Pfeilfunktionen reduziert sich demnach auf Folgendes: $arr[$x].

 
function array_values_from_keys ( $ arr ,  $ keys )  { 
    return  array_map ( fn ( $ x )  =>  $ arr [ $ x ] ,  $ keys ) ; 
}

Die Frage der kurzen Schließungen wurde in der Vergangenheit ja bereits ausführlich diskutiert. Bei einem früheren Short-Closure-RFC wurde das Voting abgelehnt. Der jetzt vorgelegte Vorschlag, der eine Mehrheit fand, versuchte einige der aufgeworfenen Bedenken mit einer anderen Wahl der Syntax zu lösen, die nicht den Einschränkungen des vorherigen Vorschlags unterliegen.

International PHP Conference

Migrating to PHP 7

by Stefan Priebsch (thePHP.cc)

A practical introduction to Kubernetes

by Robert Lemke (Flownative GmbH)

Im RFC wurde eine ausführliche Diskussion verschiedener Syntaxalternativen sowie der Bindungssemantik geführt. Die Autoren des RFC merken an, dass es kurze Schließungen leider ein Thema ist, bei dem aufgrund signifikanter Einschränkungen in der Syntax und Implementierung wahrscheinlich keine „perfekte“ Lösung zu finden ist. Der jetzt abgestimmte Vorschlag trifft die Wahl, die die Initiatoren des RFC für „am wenigsten schlecht“ halten. Die ausführliche Version des jetzt mehrheitlich abgestimmten Vorschlags kann auf der PHP Wikiseite nachgelesen werden.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -