PHP’s Magic Constants: __LINE__ , __FILE__, __FUNCTION__, __CLASS__, and __METHOD__

By  on  

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?

Recent Features

  • By
    LightFace:  Facebook Lightbox for MooTools

    One of the web components I've always loved has been Facebook's modal dialog.  This "lightbox" isn't like others:  no dark overlay, no obnoxious animating to size, and it doesn't try to do "too much."  With Facebook's dialog in mind, I've created LightFace:  a Facebook lightbox...

  • By
    Interview with a Pornhub Web Developer

    Regardless of your stance on pornography, it would be impossible to deny the massive impact the adult website industry has had on pushing the web forward. From pushing the browser's video limits to pushing ads through WebSocket so ad blockers don't detect them, you have...

Incredible Demos

  • By
    Web Audio API

    The Web Audio API allows developers to load and decode audio on demand using JavaScript.  The more I evaluate awesome games for Firefox OS TVs, the more I get to learn about these APIs that I normally wouldn't touch.  The following is a very basic introduction to the WebAudio API...

  • By
    MooTools onLoad SmoothScrolling

    SmoothScroll is a fantastic MooTools plugin but smooth scrolling only occurs when the anchor is on the same page. Making SmoothScroll work across pages is as easy as a few extra line of MooTools and a querystring variable. The MooTools / PHP Of course, this is a...

Discussion

  1. 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

  2. Wow, awesome usage of the __FILE__ magic constant — I hadn’t thought of that one!

  3. Jaime

    Useful!

  4. To Jesus DeLaTorre:

    “dirname(dirname(__FILE__)”

    Maybe it could be better, when you use this:

    $dir = str_replace ( “\”, “/”, dirname ( _FILE_ ) )
    -> for Windows based systems

    (PS: nice book engine)

  5. thanks for this, i knew only __FILE__ so i googled this article :)

  6. Jim

    @jeezaa:

    Instead of / for linux and \ for windows, just use another constant:

    include_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'database.class.php);
  7. Petah

    omg @ the comments

    realpath(dirname(__FILE__)) or

    __DIR__ or

    realpath(dirname(__FILE__).’/..’).’/file.bla’

  8. is there any way to get the constants defined in a php file using
    define()?

  9. I have never seen the use of __FUNCTION__
    Can give me any Example.

  10. Allan Peda

    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.

  11. There’s also the __NAMESPACE__ constant, e.g.

    namespace hyperdrive;
    add_action('wp_head', __NAMESPACE__ .'\engage');
    

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!