A PHP constant is an identifier for a fixed value that cannot change or be undefined once your script defines it. Unlike variables, constants never start with a $ sign and are automatically readable inside every function and class in your script.
const vs define()PHP gives you two ways to declare constants. Choose const for clean top-level or class definitions, and define() when the value comes from a dynamic condition or runtime expression.
| Feature | const |
define() |
|---|---|---|
| Evaluation Time | Compile-time | Runtime |
| Conditional Blocks | Not allowed inside if |
Allowed inside if blocks |
| Class Constants | Supported | Not supported |
| Allowed Values | Scalar and constant arrays | Any scalar, null, or array expression |
<?php
declare(strict_types=1);
const APP_NAME = "KoderSolution";
const SUPPORTED_LOCALES = ["en", "bn", "es"];
if (!defined('MAX_UPLOAD_MB')) {
define('MAX_UPLOAD_MB', 10);
}
echo APP_NAME . " allows uploads up to " . MAX_UPLOAD_MB . " MB." . PHP_EOL;
PHP provides predefined constants like PHP_VERSION and PHP_EOL, plus magic constants whose values change depending on where they appear in your file.
<?php
echo "Current file: " . __FILE__ . PHP_EOL;
echo "Current directory: " . __DIR__ . PHP_EOL;
echo "Executing line: " . __LINE__ . PHP_EOL;
function logAction(): void
{
echo "Inside function: " . __FUNCTION__ . PHP_EOL;
}
logAction();
Using __DIR__ when building file paths makes require statements reliable no matter which working directory started the script.
$: Writing $APP_NAME looks for a variable instead of your constant.define() twice with the same name throws a warning. Check defined('NAME') first if unsure.const inside an if block: Placing const DEBUG = true; inside a conditional causes a ParseError. Use define() for conditional constants.Use uppercase letters with underscores (SCREAMING_SNAKE_CASE), such as API_TIMEOUT_SECONDS, so constants stand out clearly from variables.
Yes. Top-level constants are globally scoped everywhere in your script without needing the global keyword.
Yes. Since PHP 7, both const and define() support array constants, such as const ROLES = ['admin', 'member'];.
Sign in to track your learning journey, earn industry-recognized certificates, and join our elite developer community.
Quick Access With
Experiment with the code from this lesson in our interactive playground.