Ilija Tovilos RFC zu Closure-Optimierungen für PHP wurde im Internals-Vote mit 24 Ja, 0 Nein und 1 Enthaltung angenommen. Die Abstimmung lief bis zum 13.03.2026, 14:00 UTC; die Umsetzung steckt im php-src-Pull-Request 19941.
Der RFC umfasste zwei Optimierungen: einen Cache für zustandslose Closures, der den Großteil des Performance-Gewinns bringt, sowie eine Inferenz statischer Closures, die Closures ohne $this-Nutzung automatisch als static behandelt hätte. Auf Nachfrage von Kamil Tekiela bestätigte Tovilo, dass auch Projekte profitieren, die bereits alle statischen Closures mit dem Schlüsselwort markieren – und betonte, dass explizites static weiterhin vorzuziehen ist. Die Inferenz war für Codebasen gedacht, die static aus ästhetischen Gründen weglassen oder die Performance-Auswirkungen nicht kennen.
Nach Ende des Votes entdeckte Tovilo einen Grenzfall, der die Inferenz bricht: Eine Closure kann ein Callable wie 'Foo::instanceCall' an array_map übergeben; sie nutzt selbst kein $this und verstößt gegen keine Inferenz-Regel, ruft aber dennoch eine Instanzmethode auf. Da dieser Fall nicht zuverlässig erkennbar ist, strich er die Inferenz komplett und mergt nur den Cache für zustandslose Closures.
Praktisch heißt das: Code, der alle relevanten Closures als static annotiert, erhält den vollen Performance-Vorteil; nicht annotierter Code profitiert nicht. Der RFC wurde um einen Errata-Abschnitt ergänzt, und Tovilo bat um etwaige Einwände gegen die Teilumsetzung.
Kommentare
Noch keine Kommentare — schreib den ersten.
Starte die Diskussion
Kein Konto, kein Passwort nötig — gib einfach deine E-Mail-Adresse ein, wir senden dir einen einmaligen Anmelde-Link. Beim ersten Mal bist du damit automatisch angemeldet.
Deine Bewertung wird nach der Anmeldung automatisch übernommen.
Schau in dein Postfach
Wir haben einen Anmelde-Link an … gesendet. Öffne ihn auf diesem Gerät — dieser Tab meldet dich automatisch an.
Nichts angekommen? Wirf einen Blick in den Spam-Ordner — und markiere die Mail dort als „Kein Spam“, dann landet sie künftig direkt im Postfach.