回答
如果你定义常量define("YEAR",365);
在执行期间,你不能改变它,以便今年将永远是365米没有什么。另一方面,变量可以在脚本执行期间更改它们的值,并且它们具有局部范围,这意味着它们仅在它们声明的函数文件中可用。常量具有全局作用域,可以从整个脚本中访问它们。
http://php.net/manual/en/language.constants.php
http://planetozh.com/blog/2006/06/php-variables-vs-constants/
我看到了 - 它就像是java常量,这很有道理,我只是从来没有使用它们,所以我不知道它是什么。谢谢。 – JDelage 2010-12-13 15:27:10
常量是为了用于该程序运行过程中不改变的值。它们不存储在内存中。
好的做法是将稍后可能在文件顶部的常量中更改的静态参数,以便可以在必要时找到并轻松更改它们,而不是查找/替换所有内容。
另一个:常数应该始终在CAPITAL_LETTERS中,所以很明显它是一个常量。
当您想要一个永不改变的全局可访问值时,可以定义常量。例如,您可以为网站编辑器定义一个常量,这些常量必须出现在很多页面上,并且如果贵公司聘请了不同的网站编辑器,那么这个PITA就会发生变化。
所以,
define('WEBEDITOR','Tom Jones');
然后徘徊无论你需要输出 '汤姆·琼斯',只是回声WEBEDITOR。
一个变量,就是那个:变量。它改变。
常数的值不能改变。
命名常数通常被认为是不好的做法在大多数语言(除编译条件语句的情况下 - 这PHP不使用,被解释 - 或者,如果它是有保证的,他们都集中在市中心,如在配置文件中),所以最好不要过度使用它们,而应尽可能使用class constants。
其原因在于,它可能会使确定常量的位置变得更加困难,并且更难避免名称冲突。
但是,使用常量作为配置值是可以接受的。只要你把它们全部定义在一个地方。这对于任何可能位于不同服务器上的大型应用程序都很重要,并且需要一种方法来查找大量服务器特定的值,这些值会根据服务器的不同而发生变化。就像任何事情一样,你可以滥用它们。但是,如果你正确使用它们,它可以是一个真正的节省时间。 – DampeS8N 2010-12-13 15:31:57
@ DampeS8N:的确如此。我会编辑说通常不好的做法。我认为这是一个普遍的概念。 – webbiedave 2010-12-13 15:33:09
他们被认为是不好的做法,因为他们是全球性的? – JDelage 2010-12-14 05:55:06
- 1. 张量:它是什么,它与载体有什么不同?
- 2. com.isomorphic.datasource。*和com.smartgwt.client.data。*,它们有什么不同?
- 3. 什么是C++模块,它们与命名空间有什么不同?
- 4. MIPS异常它们是什么意思
- 5. 如果字符串是矢量,为什么它们是不变的?
- 6. IIS/ASP.NET的所有用户帐户是什么?它们有什么不同?
- 7. CSS中的变量 - 为什么不能使用它们?
- 8. 为什么公用块变量不保存它们的值?
- 9. Java中的引用变量究竟是什么?它与其他变量有什么不同?
- 10. 什么是Maven的目标和阶段,它们有什么不同?
- 11. SQL,Postgres OID,它们是什么以及它们为什么有用?
- 12. 什么是仿函数,为什么我们需要它们?
- 13. SilverStripe可以做什么不同类型的“刷新”,它们有什么不同?
- 14. NaNi是什么,它与NaN有什么不同?
- 15. 什么是renderAjax(),它与render()有什么不同?
- 16. 什么是具体调用,它与Reflection有什么不同?
- 17. 机械化什么是cookiejar,它与饼干有什么不同?
- 18. 什么是“Clean C”,它与标准C有什么不同?
- 19. 什么是mdToken,它与MethodTable有什么不同?
- 20. 什么是Dockerfile.dev,它与Dockerfile有什么不同
- 21. 什么是原子变量,它的用法是什么?
- 22. 内联会话它们是什么?
- 23. 这些IIS绑定是什么?它们的目的是什么?
- 24. Force.com工作流程 - 它们与触发器有什么不同?
- 25. 这些数字是什么,它们的类型是什么?
- 26. 大量数据 - 发送它们的最佳方式是什么?
- 27. 为什么我的变量取决于它们是数组还是整数?
- 28. expires头?我如何实施它们,它们是什么?
- 29. 符号常数:它们如何存储以及它们的类型是什么?
- 30. 什么是“因子图”,它们对于什么有用?
那么,你说的是命名常量,你的例子没有提供一个名字(假设'$ a'是未定义的)。也许你的意思是'define('a',365);' – webbiedave 2010-12-13 15:24:34