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

  • By
    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...

Incredible Demos

  • By
    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...

  • By
    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...

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!