What is the Difference Between define() and const Keyword in PHP ?

In PHP, both define( ) and const Keywords are used to define constants, which are identifiers with unchanging values. However, they have differences in terms of usage, scope, and flexibility.

Syntax

// Using define() function
define("CONSTANT_NAME", value);

// Using const keyword (outside of class)
const CONSTANT_NAME = value;

Important Points

  • Constants defined using define( ) are global and can be defined anywhere in the script, including within functions or conditionals.
  • Constants defined using const Keywords are class constants and can only be defined within classes or interfaces.
  • A define() method is evaluated at runtime, whereas const the keyword is evaluated at compile time.
  • Constants defined using const keywords are case-sensitive, whereas those defined using define() are case-insensitive by default.

Difference between define() and const

define() const keyword
Defines constants at runtime Defines class constants at compile time
Can be defined anywhere in the script Can only be defined within classes or interfaces
Case-insensitive by default Case-sensitive by default
Global scope Class scope

Usage

  • Dynamic vs. Static Definition: define() allows dynamic definition of constants at runtime, while const keyword allows static definition within class or interface definitions.
  • Scope: Constants defined using define() are global and can be accessed from anywhere in the script, while constants defined using const keyword are scoped to the class or interface in which they are defined.
  • Case Sensitivity: Constants defined using const keyword are case-sensitive by default, whereas those defined using define() are case-insensitive unless explicitly specified.

Example:

// Using define() to define a Global constant
define("PI", 3.14);

// Using const keyword to define a Class constant
class Math {
const PI = 3.14;
}