token_get_all() is not capable of dealing with this one correctly.
function __FILE__(){ echo __METHOD__, PHP_EOL; }
function __DIR__(){ echo __METHOD__, PHP_EOL; }
function __NAMESPACE__(){ echo __METHOD__, PHP_EOL; }
- function __halt_compiler(){ echo __METHOD__, PHP_EOL; }
}
$obj = new Obj;
$obj->__FILE__();
$obj->__DIR__();
$obj->__NAMESPACE__();
-$obj->__halt_compiler();
echo "\nDone\n";
Obj::__FILE__
Obj::__DIR__
Obj::__NAMESPACE__
-Obj::__halt_compiler
Done
static function __FILE__(){ echo __METHOD__, PHP_EOL; }
static function __DIR__(){ echo __METHOD__, PHP_EOL; }
static function __NAMESPACE__(){ echo __METHOD__, PHP_EOL; }
- static function __halt_compiler(){ echo __METHOD__, PHP_EOL; }
}
Obj::empty();
Obj::__FILE__();
Obj::__DIR__();
Obj::__NAMESPACE__();
-Obj::__halt_compiler();
echo "\nDone\n";
Obj::__FILE__
Obj::__DIR__
Obj::__NAMESPACE__
-Obj::__halt_compiler
Done
const __FILE__ = '__FILE__';
const __DIR__ = '__DIR__';
const __NAMESPACE__ = '__NAMESPACE__';
- const __HALT_COMPILER = '__halt_compiler';
}
echo Obj::EMPTY, PHP_EOL;
echo Obj::__FILE__, PHP_EOL;
echo Obj::__DIR__, PHP_EOL;
echo Obj::__NAMESPACE__, PHP_EOL;
-echo Obj::__HALT_COMPILER, PHP_EOL;
echo "\nDone\n";
__FILE__
__DIR__
__NAMESPACE__
-__halt_compiler
Done
| T_THROW | T_USE | T_INSTEADOF | T_GLOBAL | T_VAR | T_UNSET | T_ISSET | T_EMPTY | T_CONTINUE | T_GOTO
| T_FUNCTION | T_CONST | T_RETURN | T_PRINT | T_YIELD | T_LIST | T_SWITCH | T_ENDSWITCH | T_CASE | T_DEFAULT | T_BREAK
| T_ARRAY | T_CALLABLE | T_EXTENDS | T_IMPLEMENTS | T_NAMESPACE | T_TRAIT | T_INTERFACE | T_CLASS
- | T_CLASS_C | T_TRAIT_C | T_FUNC_C | T_METHOD_C | T_LINE | T_FILE | T_DIR | T_NS_C | T_HALT_COMPILER
+ | T_CLASS_C | T_TRAIT_C | T_FUNC_C | T_METHOD_C | T_LINE | T_FILE | T_DIR | T_NS_C
;
semi_reserved: