1--TEST-- 2Bug 66622: Closures do not correctly capture the late bound class (static::) in some cases 3 4--FILE-- 5<?php 6class A { 7 static function name() { return 'A'; } 8 function foo() { 9 $fn = function() { return static::name(); }; 10 echo static::name() . ' vs ' . $fn() . "\n"; 11 } 12 function bar() { 13 $fn = static function() { return static::name(); }; 14 echo static::name() . ' vs ' . $fn() . "\n"; 15 } 16 static function baz() { 17 $fn = function() { return static::name(); }; 18 echo static::name() . ' vs ' . $fn() . "\n"; 19 } 20} 21class B extends A { 22 static function name() { return 'B'; } 23} 24 25function test() { 26 (new B)->foo(); 27 (new B)->bar(); 28 (new B)->baz(); 29 B::baz(); 30} 31test(); 32 33--EXPECT-- 34B vs B 35B vs B 36B vs B 37B vs B 38