PHP中的DEFINE与变量的区别

66

有人能解释一下使用

define('SOMETHING', true);

$SOMETHING = true;

也许一个方法比另一个更有利呢?

我在任何地方都使用变量,甚至在一个被包含到每个页面的配置文件中,我仍然使用变量,因为我不知道为什么要使用定义方法。

5个回答

93

DEFINE用于定义常量,常量为全局变量,可以在任何地方使用,并且不可重新定义,而变量可以被重新定义。

我通常用DEFINE来配置因为事后无法篡改,可以在任何地方检查并避免全局变量,从而使检查更加容易。


我能否将用户的ID从数据库传递到会话中?例如,定义($ _SESSION ['user_id'],row ['id']),其中row ['id']来自数据库。 - 4 Leave Cover

14

一旦定义,'常量'在运行时无法更改,而普通的变量赋值可以。

常量适用于像配置指令这样在执行期间不应更改的内容。此外,如果被认为是常量的值被明确地标记为常量,代码将更易于阅读(和维护和交接)。


9

范围也有所不同。

在原帖提供的示例中,$SOMETHING 在函数内不可访问,而 define('SOMETHING', true) 可以访问。


那是一个非常棒且有用的提示,对于配置文件中有许多函数的情况尤其如此。 - Saghachi

7

define()函数创建的是只读变量,与支持读写操作的普通变量不同。


1
只是一个注释 - 我不明白术语“只读变量”如何适用于define() - 正如手册所述,它定义了一个命名常量,这是完全不同的东西。 - J.C. Inacio
-1:错误的,即使不是,它也只是重申了上面两个帖子。 - hobodave
2
根据定义,常量不是变量(开玩笑的);-) - Robert Swisher
@hobodave ... 是的,除了它是在“上面”的两个帖子之前发布了1小时...除此之外,我不认为这是错误的...在许多语言中,常量是只读变量...除了“常量”在语义上更清晰之外,它与“只读变量”几乎可以互换... - back2dos

0
一个常量在你想从函数内部访问数据时非常有用,查看这个。
<?php
function data(){
  define("app","hey you can see me from outside the function",false);
  $tech = "xampp";
}
data();
echo $tech;
echo app;
?>

如果您使用变量,您永远不会得到内部值,以下是我得到的内容

注意:D:\xampp\htdocs\data\index.php 第8行中未定义变量:tech 嘿,你可以从函数外面看到我


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接