Contributing Advent 8: The magic __FILE__ constant
This issue came up in the #xdebug IRC channel on Freenode:
18:25 <user> no magic constants for PHP ? 18:27 <user> __FILE__ evaluates to "xdebug://debug-eval"
The user noticed this issue in the Eclipse expression evaluator. A similar issue is also described a few times on the internet:
With the hint in comment 2 in the first URL, I answered the report in an answer on StackOverflow (the third URL). I am repeating this answer (with some modifications) here:
The output you get is not incorrect. __FILE__ is a special constant that gets evaluated at parser time. In fact, even though it looks like a constant, it is really not. When the PHP script gets compiled, it would really read something like this:
// test.php
<?php
"test.php";
?>
even though the script source was:
// test.php
<?php
__FILE__;
?>
This means that after parsing, there is no such "constant" __FILE__ at all, as it has already been replaced.
This means that if you evaluate __FILE__ in an IDE, through DBGp's eval command with eval -- __FILE__ it can not return you a filename that is represented through the __FILE__ "constant". Instead, it uses the filename for the current context which is xdebug eval or in later versions, xdebug://debug-eval.
In essence, it's the same as doing this:
php -r 'eval("__FILE__;");'
Which also outputs:
Command line code(1) : eval()'d code
Xdebug looks for this sort of output format, and changes it to xdebug://debug-eval so that it can actually debug into eval'ed code.
__FILE__ works as expected in "normal" PHP source code, as can be proven with this snippet:
<?php $currentFilename = __FILE__; ?>
And after it has been assigned to a variable, you can evaluate $currentFilename in your IDE.
Life Line
I've just finished reading "Snow Crash" by Neal Stephenson. I found this a fun and excellent read.
Updated a restaurant
Updated a restaurant
Updated a restaurant
Updated a restaurant
Updated a brewery
Updated a restaurant
Updated a restaurant
Having dessert before even attempting to go to the restaurant for my (early) birthday dinner.
Enjoying this barrel aged quadrupal, in entirely new Dutch city (another Christmas tradition for us).
Updated a bar
Updated a restaurant
Updated a pub
Updated a bar
Updated a restaurant
Updated an attraction and a museum
Updated a restaurant
Updated a bar
Updated a brewery
I walked 7.4km in 1h17m31s
I walked 1.0km in 8m59s
I know my French is pretty terrible, but I'm sure I'm closer to the correct answer than what's shown here...
I walked 1.2km in 12m04s
I walked 6.4km in 1h11m52s
Merge branch 'v2022'
Merge pull request #169 from psumbera/solaris-2




Shortlink
This article has a short URL available: https://drck.me/adv1308-aex