bug39576.phpt 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. --TEST--
  2. Bug #39576 (array_walk() doesn't separate userdata zval)
  3. --FILE--
  4. <?php
  5. class Test {
  6. public $_table = '';
  7. public $_columns = array ();
  8. public $_primary = array ();
  9. }
  10. $test = new Test ();
  11. $test->name = 'test';
  12. $test->_columns['name'] = new stdClass;
  13. function test ($value, $column, &$columns) {}
  14. array_walk (
  15. get_object_vars ($test),
  16. 'test',
  17. $test->_columns
  18. );
  19. var_dump($test);
  20. array_intersect_key (
  21. get_object_vars ($test),
  22. $test->_primary
  23. );
  24. echo "Done\n";
  25. ?>
  26. --EXPECTF--
  27. Notice: Only variables should be passed by reference in %s on line %d
  28. Warning: test(): Argument #3 ($columns) must be passed by reference, value given in %s on line %d
  29. Warning: test(): Argument #3 ($columns) must be passed by reference, value given in %s on line %d
  30. Warning: test(): Argument #3 ($columns) must be passed by reference, value given in %s on line %d
  31. Warning: test(): Argument #3 ($columns) must be passed by reference, value given in %s on line %d
  32. object(Test)#%d (4) {
  33. ["_table"]=>
  34. string(0) ""
  35. ["_columns"]=>
  36. array(1) {
  37. ["name"]=>
  38. object(stdClass)#%d (0) {
  39. }
  40. }
  41. ["_primary"]=>
  42. array(0) {
  43. }
  44. ["name"]=>
  45. string(4) "test"
  46. }
  47. Done