Tag Archives: Constants

Magic Constants

Definition

• PHP Provides a set of predefined constants defined by the php core (EX: E_ERROR; TRUE)

• Several of these can change, depending upon where they are used.

Therefore, not true constants (EX: __DIR__; __NAMESPACE__).

• __DIR__: returns the current working directory
• __FILE__: returns the current working directory and file name
• __FUNCTION__: returns the current function name
• __CLASS__: returns the current class and namespace if defined
• __LINE__: returns the current line number at the point of use
• __METHOD__: returns the current method name
• __TRAIT__: returns the trait name including namespace if defined.
• __NAMESPACE__: returns the current namespace

Example

ClassName::class: returns the fully qualified class name

<?php
 namespace NS {
 class ClassName {}
 echo ClassName::class;
 }
?>

It outputs NS\ClassNam

Constants

Definition

• Identifier for a value that does not change once defined

Naming

• Start with a letter or underscore, are case sensitive, contain only alphanumeric characters and underscores
• By convention use only uppercase letters

Access

• May be defined and accessed anywhere in a program • must be defined before use; cannot be changed subsequently

Class Constants

It is possible to define constant values on a per-class basis remaining the same and unchangeable. Constants differ from normal variables in that you don’t use the $ symbol to declare or use them. The default visibility of class constants is public.

The value must be a constant expression, not (for example) a variable, a property, or a function call.

It’s also possible for interfaces to have constants. Look at the interface documentation for examples.

As of PHP 5.3.0, it’s possible to reference the class using a variable. The variable’s value can not be a keyword (e.g. self, parent and static).

Note that class constants are allocated once per class, and not for each class instance.

  • Class constants are public
  • Class constants are being inherited
  • Class constants can be initialized by const
<?php
 class MyClass {
 const CONSTANT = 'constant value';

function showConstant() {
 echo self::CONSTANT . "\n";
 }
 }
 
 echo MyClass::CONSTANT . "\n";
 
 $class = new MyClass();
 $class->showConstant();
 
?>