Constants in PHP
Constants in PHP
In PHP, constants are identifiers (names) for simple values that cannot be changed during the script’s execution. Unlike variables, constants do not start with the dollar sign ($) and once defined, their value cannot be altered.
Types of Constants
Predefined Constants: Constants that are built into PHP, such as
PHP_VERSION,PHP_OS, etc.User-defined Constants: Constants created by the user using the
define()function orconstkeyword.
1. Predefined Constants
PHP provides several predefined constants that you can use in your code. Some commonly used predefined constants are:
PHP_VERSION: The version of PHP currently being used.PHP_OS: The operating system PHP is running on.__LINE__: The current line number in the file.__FILE__: The full path and name of the file.__DIR__: The directory of the file.
Example:
<?phpecho "PHP Version: " . PHP_VERSION . "<br>";echo "Operating System: " . PHP_OS . "<br>";echo "Current Line: " . __LINE__ . "<br>";echo "File Path: " . __FILE__ . "<br>";echo "Directory: " . __DIR__ . "<br>";?>2. User-defined Constants
You can define your own constants in PHP using the following methods:
a. Using define()
The define() function is used to define constants at runtime. It takes two arguments: the name of the constant (as a string) and its value.
Syntax:
define('CONSTANT_NAME', 'value');The constant name is usually written in uppercase by convention.
Constants defined using
define()can be used globally in the script, regardless of scope.
Example:
<?phpdefine('SITE_NAME', 'MyWebsite');define('PI', 3.14159);echo SITE_NAME; // Outputs: MyWebsiteecho PI; // Outputs: 3.14159?>Note: Once defined, a constant cannot be redefined or undefined using define().
b. Using const (for class constants or at the top level)
You can also define constants using the const keyword. The const keyword is mainly used for defining constants in classes or for defining constants at the top level of the script.
Syntax:
const CONSTANT_NAME = 'value';Constants defined with
constare available within the scope they are defined (e.g., inside a class or globally).
Example:
<?php// Top-level constantconst MAX_USERS = 100;echo MAX_USERS; // Outputs: 100?>c. Class Constants
Constants can also be defined within a class. These constants are accessed using the :: operator.
Example:
<?phpclass MyClass { const VERSION = '1.0.0'; const STATUS = 'active';}echo MyClass::VERSION; // Outputs: 1.0.0echo MyClass::STATUS; // Outputs: active?>Note:
constis not allowed to be used inside functions or methods to define constants.define()can define constants globally, butconstis more suited for defining constants within classes or at the global level.
3. Key Differences Between define() and const
| Feature | define() | const |
|---|---|---|
| Scope | Can be used anywhere in the code. | Must be used at the top level (outside functions and classes). |
| Class Usage | Not allowed inside classes (except as global constants). | Can be used inside classes (class constants). |
| Case Sensitivity | Constant names are case-sensitive by default. | Constant names are case-sensitive by default. |
| Redefinition | Cannot be redefined. | Cannot be redefined once set. |
| Performance | Slightly slower (due to runtime definition). | Faster (compiled at compile-time). |
4. Using Constants with Arrays or Objects
You can use constants in arrays or as properties of objects, just like any other value.
Example:
<?phpdefine('MAX_LIMIT', 50);$array = [MAX_LIMIT => 'max_value'];echo $array[MAX_LIMIT]; // Outputs: max_value?>Example with Class Properties:
<?phpclass MyClass { const API_KEY = '123456789'; public function getApiKey() { return self::API_KEY; // Accessing class constant }}$obj = new MyClass();echo $obj->getApiKey(); // Outputs: 123456789?>5. Accessing Constants
Global Constants: You can directly use them anywhere after they have been defined.
Class Constants: Access class constants using the
ClassName::CONSTANT_NAMEsyntax.
Example:
<?phpdefine('APP_NAME', 'MyApp');class App { const VERSION = '1.0.0';}echo APP_NAME; // Outputs: MyAppecho App::VERSION; // Outputs: 1.0.0?>6. Constant Expressions
PHP allows the use of certain expressions in constant definitions, like arithmetic expressions or other constants.
Example:
<?phpdefine('BASE_URL', 'https://www.example.com/');define('FULL_URL', BASE_URL . 'home'); // Concatenating constantsecho FULL_URL; // Outputs: https://www.example.com/home?>7. Case Sensitivity of Constants
By default, constants are case-sensitive. However, with define(), you can make constants case-insensitive by passing the third argument as true.
Example (case-insensitive constant):
<?phpdefine('SITE_URL', 'https://example.com', true);echo site_url; // Outputs: https://example.com?>Conclusion
Constants in PHP are values that cannot be changed once set.
You can define constants using
define()for global constants orconstfor class constants and at the top level.Constants are useful for values that remain constant throughout the execution of a script, like configuration settings or API keys.
Predefined constants like
PHP_VERSION,PHP_OS, and others are built into PHP and provide useful runtime information.