Magic constants

There are a few magical constants that change depending on where they are used. For example, the value of __LINE__ depends on the line that it's used on in a script. All these "magical" constants are resolved at compile time, unlike regular constants, which are resolved at runtime. These special constants are case-insensitive and are as follows:

PHP's magic constants
Name Description
__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). When used inside 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.
__PROPERTY__ Only valid inside a property hook. It is equal to the name of the property.
__NAMESPACE__ The name of the current namespace.
ClassName::class The fully qualified class name.

See Also

  • ::class
  • get_class
  • get_object_vars
  • file_exists
  • function_exists