JasonDavis
JasonDavis

Reputation: 48983

PHP CONSTANT not set but still prints something to screen?

Isn't PHP suppose to show an error is you call a non-existent CONSTANT? When I run the code below for a constant that is not defined, it shows on the screen "TEST" instead of any kind of error. Could I have a setting wrong in my php.ini file or is this something new? Im running PHP 5.3

<?php
echo TEST;
?>

Upvotes: 0

Views: 391

Answers (4)

Kai Chan
Kai Chan

Reputation: 2473

As the others have stated, referencing an undefined constant is a notice, not a fatal error (one that would cause PHP to stop running the script), and PHP will convert the constant name to a string and move on. Depending on your error_reporting setting, PHP might or might not print a message. You need to set it to at least 8 (E_NOTICE) before PHP prints the notice message. If what you want is to catch the undefined constant situation and handle it (e.g. have PHP print a message and exit), use the defined function like this:

if (defined('TEST')) {
    echo TEST;
} else {
    // error handling here
}

Upvotes: 0

zneak
zneak

Reputation: 138261

This is just a warning or a notice, I'm not quite sure. The use of an undefined constant is not prohibited. However, echo FOO BAR; would indeed fail, because it's equivalent to echo "FOO" "BAR";.

Either your error_reporting setting does not show warnings or notices, or your display_errors setting is set to false.

You should not rely on this.

Upvotes: 0

Tatu Ulmanen
Tatu Ulmanen

Reputation: 124888

It's supposed to show a notice which you may not have set as visible (E_NOTICE). On default, if the constant is not defined, it shows the literal value.

Upvotes: 2

Kyle Butt
Kyle Butt

Reputation: 9810

There's a default in php for an undefined constant to be silently replaced by a string representing its name. I think it can be disabled in php.ini, but it shouldn't be relied upon in any case.

Upvotes: 0

Related Questions