mirror of
https://github.com/php/php-src.git
synced 2024-12-14 04:16:30 +08:00
f47976dd9b
This also adds some smaller, isolated tests related to bug 66622.
38 lines
792 B
PHP
38 lines
792 B
PHP
--TEST--
|
|
Bug 66622: Closures do not correctly capture the late bound class (static::) in some cases
|
|
|
|
--FILE--
|
|
<?php
|
|
class A {
|
|
static function name() { return 'A'; }
|
|
function foo() {
|
|
$fn = function() { return static::name(); };
|
|
echo static::name() . ' vs ' . $fn() . "\n";
|
|
}
|
|
function bar() {
|
|
$fn = static function() { return static::name(); };
|
|
echo static::name() . ' vs ' . $fn() . "\n";
|
|
}
|
|
static function baz() {
|
|
$fn = function() { return static::name(); };
|
|
echo static::name() . ' vs ' . $fn() . "\n";
|
|
}
|
|
}
|
|
class B extends A {
|
|
static function name() { return 'B'; }
|
|
}
|
|
|
|
function test() {
|
|
(new B)->foo();
|
|
(new B)->bar();
|
|
(new B)->baz();
|
|
B::baz();
|
|
}
|
|
test();
|
|
|
|
--EXPECT--
|
|
B vs B
|
|
B vs B
|
|
B vs B
|
|
B vs B
|