define

(PHP 4, PHP 5, PHP 7, PHP 8)

define定義一個常量

說明

define(string $constant_name, mixed $value, bool $case_insensitive = false): bool

在運行時定義一個常量。

參數(shù)

constant_name

常量名。

注意:

可以用 define() 定義保留關鍵詞甚至無效名稱的常量,它的值可以(僅可以)通過 constant() 獲取。 不過,不推薦這么做。

value

常量的值。在 PHP 5 中,value 必須是 scalar 值(int、 floatstring、booleannull)。在 PHP 7 中, array 值也被允許。

警告

常量還可以定義為 resource 類型,但并不推薦這樣做,因為可能會有不可預知的行為發(fā)生。

case_insensitive

如果設置為 true,則該常量不區(qū)分大小寫。默認是區(qū)分大小寫的。比如, CONSTANTConstant 代表了不同的值。

警告

PHP 7.3.0 起廢棄了定義不區(qū)分大小寫的常量。

注意:

不區(qū)分大小寫的常量以小寫的形式儲存。

返回值

成功時返回 true, 或者在失敗時返回 false。

更新日志

版本 說明
7.3.0 廢棄了 case_insensitive,并將在 8.0.0 版中移除。
7.0.0 允許 array 的值。

范例

示例 #1 定義常量

<?php
define
("CONSTANT""Hello world.");
echo 
CONSTANT// 輸出 "Hello world."
echo Constant// 輸出 "Constant" 并導致 Notice

define("GREETING""Hello you."true);
echo 
GREETING// 輸出 "Hello you."
echo Greeting// 輸出 "Hello you."

//  PHP 7 起就可以運行了
define('ANIMALS', array(
    
'dog',
    
'cat',
    
'bird'
));
echo 
ANIMALS[1]; // 輸出 "cat"

?>

示例 #2 以保留名稱定義常量

本例子說明了以 魔術常量 相同名稱定義常量的能力。 由于行為結果過于令人迷惑,所以實踐中不推薦。

<?php
var_dump
(defined('__LINE__'));
var_dump(define('__LINE__''test'));
var_dump(constant('__LINE__'));
var_dump(__LINE__);
?>

以上例程會輸出:

bool(false)
bool(true)
string(4) "test"
int(5)

參見