Magical Constants


computer apg

To allow to determine the line number, the full path and filename of the file with symlinks resolved, the directory of the file.

If used inside an include, the directory of the included file is returned, the function name, the class name, the trait name, the class method and the namespace.

PHP provides a large number of predefined constants to any script which it runs.

Many of these constants, however, are created by various extensions, and will only be present when those extensions are available, either via dynamic loading or because they have been compiled in.

These special constants are case-insensitive.

All these Magical Constants are resolved at compile time, unlike Regular Constants, which are resolved at runtime.


MAGIC CONSTANTS
NAMEMEANING
__LINE__ The current line number of the file.
__FILE__ The full path and filename of the file with symlinks resolved. If used inside an include, the name of the included file is returned.
__DIR__ The directory of the file. If used inside an include, the directory of the included file is returned. This is equivalent to dirname(__FILE__). This directory name does not have a trailing slash unless it is the root directory.
__FUNCTION__ The function name, or {closure} for anonymous functions.
__CLASS__ The class name. The class name includes the namespace it was declared in (e.g. Foo\Bar). Note that as of PHP 5.4 __CLASS__ works also in traits. When used in a trait method, __CLASS__ is the name of the class the trait is used in.
__TRAIT__ The trait name. The trait name includes the namespace it was declared in (e.g. Foo\Bar).
__METHOD__ The class method name.
__NAMESPACE__ The name of the current namespace.
ClassName::class The fully qualified class name.
ed48

  1 EXERCISE   

<?php

/*

   The directory of the file. 
   If used inside an include, 
   the directory of the
   included file is returned
   
*/

$dir01 __DIR__;

echo 
$dir01;

?>


  2 EXERCISE   

<?php

/*
 
  The full path and filename 
  of the file with symlinks resolved

*/

$file02 __FILE__;

echo 
$file02;

?>


  3 EXERCISE   

<?php

/*
  The same result as in EXERCISE 1
 
  This directory name does not have 
  a trailing slash unless it is the
  root directory

*/

$dir03 dirname(__FILE__);

echo 
$dir03;

?>