001.phpt 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. --TEST--
  2. Test basic nullsafe method calls
  3. --FILE--
  4. <?php
  5. class Foo {
  6. function null() {
  7. var_dump('Foo::null()');
  8. return null;
  9. }
  10. function self() {
  11. var_dump('Foo::self()');
  12. return $this;
  13. }
  14. }
  15. var_dump(null?->bar());
  16. var_dump(null?->bar(var_dump('Not executed')));
  17. var_dump(null?->bar()->baz());
  18. var_dump(null?->bar()->baz(var_dump('Not executed')));
  19. var_dump(null?->bar()->baz);
  20. var_dump(null?->bar()::$baz);
  21. var_dump(null?->bar()::baz());
  22. $foo = new Foo();
  23. var_dump($foo->null()?->bar());
  24. var_dump($foo->null()?->bar(var_dump('Not executed')));
  25. var_dump($foo->null()?->bar()->baz());
  26. var_dump($foo->null()?->bar()->baz(var_dump('Not executed')));
  27. var_dump($foo->null()?->bar()->baz);
  28. var_dump($foo->null()?->bar()::$baz);
  29. var_dump($foo->null()?->bar()::baz());
  30. $foo = new Foo();
  31. var_dump($foo?->self(var_dump('Executed'))->null()?->bar());
  32. var_dump($foo?->self(var_dump('Executed'))->null()?->bar(var_dump('Not executed')));
  33. var_dump($foo?->self(var_dump('Executed'))->null()?->bar()->baz());
  34. var_dump($foo?->self(var_dump('Executed'))->null()?->bar()->baz(var_dump('Not executed')));
  35. var_dump($foo?->self(var_dump('Executed'))->null()?->bar()->baz);
  36. var_dump($foo?->self(var_dump('Executed'))->null()?->bar()::$baz);
  37. var_dump($foo?->self(var_dump('Executed'))->null()?->bar()::baz());
  38. var_dump($foo->self(null?->bar())->null());
  39. try {
  40. var_dump($foo?->self()[null?->bar()]);
  41. } catch (Throwable $e) {
  42. var_dump($e->getMessage());
  43. }
  44. ?>
  45. --EXPECT--
  46. NULL
  47. NULL
  48. NULL
  49. NULL
  50. NULL
  51. NULL
  52. NULL
  53. string(11) "Foo::null()"
  54. NULL
  55. string(11) "Foo::null()"
  56. NULL
  57. string(11) "Foo::null()"
  58. NULL
  59. string(11) "Foo::null()"
  60. NULL
  61. string(11) "Foo::null()"
  62. NULL
  63. string(11) "Foo::null()"
  64. NULL
  65. string(11) "Foo::null()"
  66. NULL
  67. string(8) "Executed"
  68. string(11) "Foo::self()"
  69. string(11) "Foo::null()"
  70. NULL
  71. string(8) "Executed"
  72. string(11) "Foo::self()"
  73. string(11) "Foo::null()"
  74. NULL
  75. string(8) "Executed"
  76. string(11) "Foo::self()"
  77. string(11) "Foo::null()"
  78. NULL
  79. string(8) "Executed"
  80. string(11) "Foo::self()"
  81. string(11) "Foo::null()"
  82. NULL
  83. string(8) "Executed"
  84. string(11) "Foo::self()"
  85. string(11) "Foo::null()"
  86. NULL
  87. string(8) "Executed"
  88. string(11) "Foo::self()"
  89. string(11) "Foo::null()"
  90. NULL
  91. string(8) "Executed"
  92. string(11) "Foo::self()"
  93. string(11) "Foo::null()"
  94. NULL
  95. string(11) "Foo::self()"
  96. string(11) "Foo::null()"
  97. NULL
  98. string(11) "Foo::self()"
  99. string(38) "Cannot use object of type Foo as array"