1--TEST-- 2Bug #79778: Assertion failure if dumping closure with unresolved static variable 3--FILE-- 4<?php 5$closure1 = function() { 6 static $var = CONST_REF; 7}; 8 9var_dump($closure1); 10print_r($closure1); 11 12try { 13 $closure1(); 14} catch (\Error $e) { 15 echo $e->getMessage(), "\n"; 16} 17 18var_dump($closure1); 19print_r($closure1); 20 21const CONST_REF = 'foo'; 22$closure1(); 23var_dump($closure1); 24print_r($closure1); 25 26?> 27--EXPECTF-- 28object(Closure)#%d (4) { 29 ["name"]=> 30 string(%d) "{closure:%s:%d}" 31 ["file"]=> 32 string(%d) "%s" 33 ["line"]=> 34 int(%d) 35 ["static"]=> 36 array(1) { 37 ["var"]=> 38 NULL 39 } 40} 41Closure Object 42( 43 [name] => {closure:%s:%d} 44 [file] => %s 45 [line] => %d 46 [static] => Array 47 ( 48 [var] => 49 ) 50 51) 52Undefined constant "CONST_REF" 53object(Closure)#%d (4) { 54 ["name"]=> 55 string(%d) "{closure:%s:%d}" 56 ["file"]=> 57 string(%d) "%s" 58 ["line"]=> 59 int(%d) 60 ["static"]=> 61 array(1) { 62 ["var"]=> 63 NULL 64 } 65} 66Closure Object 67( 68 [name] => {closure:%s:%d} 69 [file] => %s 70 [line] => %d 71 [static] => Array 72 ( 73 [var] => 74 ) 75 76) 77object(Closure)#%d (4) { 78 ["name"]=> 79 string(%d) "{closure:%s:%d}" 80 ["file"]=> 81 string(%d) "%s" 82 ["line"]=> 83 int(%d) 84 ["static"]=> 85 array(1) { 86 ["var"]=> 87 string(3) "foo" 88 } 89} 90Closure Object 91( 92 [name] => {closure:%s:%d} 93 [file] => %s 94 [line] => %d 95 [static] => Array 96 ( 97 [var] => foo 98 ) 99 100) 101