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?
Comments
Be Heard!
Share your thoughts without being a jerk! And wrap your code in <code> tags, f00!
My two favorite are
That you can use it to get parent directory:
dirname(dirname(__FILE__))
or you can include the init.php file from anywhere in your filesystem:
You would use
include_once(dirname(__FILE__) . ‘/database.class.php’); 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:
include_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . ‘database.class.php);
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.