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?
![Create a Sheen Logo Effect with CSS]()
I was inspired when I first saw Addy Osmani's original ShineTime blog post. The hover sheen effect is simple but awesome. When I started my blog redesign, I really wanted to use a sheen effect with my logo. Using two HTML elements and...
![Create a CSS Cube]()
CSS cubes really showcase what CSS has become over the years, evolving from simple color and dimension directives to a language capable of creating deep, creative visuals. Add animation and you've got something really neat. Unfortunately each CSS cube tutorial I've read is a bit...
![MooTools Window Object Dumping]()
Ever want to see all of the information stored within the window property of your browser? Here's your chance.
The XHTML
We need a wrapper DIV that we'll consider a console.
The CSS
I like making this look like a command-line console.
The MooTools JavaScript
Depending on what you have loaded...
![Create a Dynamic Table of Contents Using MooTools 1.2]()
You've probably noticed that I shy away from writing really long articles. Here are a few reasons why:
Most site visitors are coming from Google and just want a straight to the point, bail-me-out ASAP answer to a question.
I've noticed that I have a hard time...
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.