defined

(PHP 3, PHP 4, PHP 5)

defined --  Checks whether a given named constant exists

Description

bool defined ( string name )

Returns TRUE if the named constant given by name has been defined, FALSE otherwise.

例子 1. Checking Constants

<?php
/* Note the use of quotes, this is important.  This example is checking
* if the string 'CONSTANT' is the name of a constant named CONSTANT */
if (defined('CONSTANT')) {
    echo
CONSTANT;
}
?>

注: If you want to see if a variable exists, use isset() as defined() only applies to constants. If you want to see if a function exists, use function_exists().

See also define(), constant(), get_defined_constants(), function_exists(), and the section on Constants.


add a note add a note User Contributed Notes
Harald Ponce de Leon
18-May-2006 11:24
Beware that some PHP versions return an integer (1 or 0) instead of a boolean.

Confirmed PHP versions that return an integer are 4.3.2 and 4.3.4.

Relevant bug report:

http://bugs.php.net/bug.php?id=27443

This make it impossible to use the following, when the PHP version is not known:

if (defined('CONSTANT') === true) {
}

Relevant commit for PHP 4.3.5 (thanks to Pollita at #php.thinktank):

http://cvs.php.net/viewcvs.cgi/Zend/zend_builtin_functions.c?
r1=1.124.2.13&r2=1.124.2.14
ndove at cox dot net
28-Jan-2005 11:20
In PHP5, you can actually use defined() to see if an object constant has been defined, like so:

<?php

class Generic
{
   const
WhatAmI = 'Generic';
}

if (
defined('Generic::WhatAmI'))
{
   echo
Generic::WhatAmI;
}

?>

Thought it may be useful to note.

-Nick
Craig at chatspike dot net
01-Dec-2003 03:57
This can be useful if you want to protect pages which get included from outsiders eyes, on your mail page (the page viewable by people) put define("X", null); then on all your other pages, you can then do something like:

if (!defined("X")) {
   echo "You Cannot Access This Script Directly, Have a Nice Day.";
   exit();
}

And your page is a good as protected :)