| 
<?php
 /*
 * Null safe operator.
 */
 
 /* testObjectOperator */
 echo $obj->foo;
 
 /* testNullsafeObjectOperator */
 echo $obj?->foo;
 
 /* testNullsafeObjectOperatorWriteContext */
 // Intentional parse error, but not the concern of the tokenizer.
 $foo?->bar->baz = 'baz';
 
 /* testTernaryThen */
 echo $obj ? $obj->prop : $other->prop;
 
 /* testParseErrorWhitespaceNotAllowed */
 echo $obj ?
 -> foo;
 
 /* testParseErrorCommentNotAllowed */
 echo $obj ?/*comment*/-> foo;
 
 /* testLiveCoding */
 // Intentional parse error. This has to be the last test in the file.
 echo $obj?
 
 |