PHP’s Magic Constants: __LINE__ , __FILE__, __FUNCTION__, __CLASS__, and __METHOD__
Setting constants in PHP is as easy as using the define function, but PHP creates a few constants in every script for you that help mostly for debugging purposes (well, that's generally the only time I use them). These constants are called "magic constants."
Magic constants have a funny syntax, placing two underscores before and after the constant's word representation. These are PHP's magic constants:
__LINE__
__FILE__
__FUNCTION__
__CLASS__
__METHOD__
You can imagine how helpful these constants are for debugging...but if you can't:
if($sugar == '') { echo('$sugar has no value on line '.__LINE__.' of ['.__FILE__.']'); }
There are also helpful uses for these magic constants:
dirname(__FILE__) // get the directory name of the current script
What do you use them for?
![Creating Scrolling Parallax Effects with CSS]()
Introduction
For quite a long time now websites with the so called "parallax" effect have been really popular.
In case you have not heard of this effect, it basically includes different layers of images that are moving in different directions or with different speed. This leads to a...
![Chris Coyier’s Favorite CodePen Demos]()
David asked me if I'd be up for a guest post picking out some of my favorite Pens from CodePen. A daunting task! There are so many! I managed to pick a few though that have blown me away over the past few months. If you...
![Create Spinning, Fading Icons with CSS3 and MooTools]()
A goal of my latest blog redesign was to practice what I preached a bit more; add a bit more subtle flair. One of the ways I accomplished that was by using CSS3 animations to change the display of my profile icons (RSS, GitHub, etc.) I...
![Telephone Link Protocol]()
We've always been able to create links with protocols other than the usual HTTP, like mailto, skype, irc ,and more; they're an excellent convenience to visitors. With mobile phone browsers having become infinitely more usable, we can now extend that convenience to phone numbers:
The tel...
My two favorite are
That you can use it to get parent directory:
or you can include the init.php file from anywhere in your filesystem:
You would use
in the init.php
Wow, awesome usage of the __FILE__ magic constant — I hadn’t thought of that one!
Useful!
To Jesus DeLaTorre:
Maybe it could be better, when you use this:
$dir = str_replace ( “\”, “/”, dirname ( _FILE_ ) )
-> for Windows based systems
(PS: nice book engine)
thanks for this, i knew only __FILE__ so i googled this article :)
@jeezaa:
Instead of
/for linux and\for windows, just use another constant:omg @ the comments
realpath(dirname(__FILE__)) or
__DIR__ or
realpath(dirname(__FILE__).’/..’).’/file.bla’
is there any way to get the constants defined in a php file using
define()?
Yes there is. The function get_defined_constants() shows you all of the defined constants see: http://www.php.net/manual/en/function.get-defined-constants.php.
I have never seen the use of __FUNCTION__
Can give me any Example.
I make it a habit to wrap these magic constants into SQL and PL/SQL blocks so that I can quickly trace the construction of queries and DML to the source.
There’s also the
__NAMESPACE__constant, e.g.namespace hyperdrive; add_action('wp_head', __NAMESPACE__ .'\engage');