Can we define constant in class constructor PHP?

No, you cannot define constants in a class constructor in PHP. Constants must be declared at the class level using the const keyword. Once declared, class constants are immutable and can be accessed using the scope resolution operator ::.

Syntax

Class constants are defined using the following syntax −

class ClassName {
    const CONSTANT_NAME = "value";
}

Why Constants Cannot Be Defined in Constructors

Constants are resolved at compile time and must have fixed values. The constructor runs at runtime when an object is instantiated, making it incompatible with constant declaration requirements.

Example

Here's how to properly define and access class constants −

<?php
class ConstantDemo {
    const LANGUAGE_NAME = "PHP";
    const VERSION = 8.0;
    
    public function __construct() {
        // This would cause a syntax error:
        // const INVALID_CONSTANT = "value";
    }
}

echo "Language: " . ConstantDemo::LANGUAGE_NAME . "<br>";
echo "Version: " . ConstantDemo::VERSION . "<br>";

// You can also access constants from an instance
$demo = new ConstantDemo();
echo "Language via instance: " . $demo::LANGUAGE_NAME;
?>
Language: PHP
Version: 8
Language via instance: PHP

Alternative: Properties in Constructor

If you need to set values during object creation, use regular properties instead −

<?php
class ConfigDemo {
    public $configValue;
    
    public function __construct($value) {
        $this->configValue = $value;
    }
}

$config = new ConfigDemo("Dynamic Value");
echo $config->configValue;
?>
Dynamic Value

Conclusion

Class constants must be declared at the class level and cannot be defined in constructors. Use regular properties when you need to set values dynamically during object instantiation.

Updated on: 2026-03-15T09:31:01+05:30

896 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements