coalesce.phpt 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. --TEST--
  2. Test ?? operator
  3. --FILE--
  4. <?php
  5. $var = 7;
  6. $var2 = NULL;
  7. $obj = new StdClass;
  8. $obj->boo = 7;
  9. $arr = [
  10. 2 => 7,
  11. "foo" => "bar",
  12. "foobar" => NULL,
  13. "qux" => $obj,
  14. "bing" => [
  15. "bang"
  16. ]
  17. ];
  18. function foobar() {
  19. echo "called\n";
  20. return ['a'];
  21. }
  22. var_dump($nonexistent_variable ?? 3);
  23. echo PHP_EOL;
  24. var_dump($var ?? 3);
  25. var_dump($var2 ?? 3);
  26. echo PHP_EOL;
  27. var_dump($obj->boo ?? 3);
  28. var_dump($obj->bing ?? 3);
  29. var_dump($arr["qux"]->boo ?? 3);
  30. var_dump($arr["qux"]->bing ?? 3);
  31. echo PHP_EOL;
  32. var_dump($arr[2] ?? 3);
  33. var_dump($arr["foo"] ?? 3);
  34. var_dump($arr["foobar"] ?? 3);
  35. var_dump($arr["qux"] ?? 3);
  36. var_dump($arr["bing"][0] ?? 3);
  37. var_dump($arr["bing"][1] ?? 3);
  38. echo PHP_EOL;
  39. var_dump(foobar()[0] ?? false);
  40. echo PHP_EOL;
  41. function f($x)
  42. {
  43. printf("%s(%d)\n", __FUNCTION__, $x);
  44. return $x;
  45. }
  46. $a = f(null) ?? f(1) ?? f(2);
  47. ?>
  48. --EXPECTF--
  49. int(3)
  50. int(7)
  51. int(3)
  52. int(7)
  53. int(3)
  54. int(7)
  55. int(3)
  56. int(7)
  57. string(3) "bar"
  58. int(3)
  59. object(stdClass)#%d (%d) {
  60. ["boo"]=>
  61. int(7)
  62. }
  63. string(4) "bang"
  64. int(3)
  65. called
  66. string(1) "a"
  67. f(0)
  68. f(1)