回答
如果你定義常量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. 什麼是Eclipse的構建變量,它們與環境變量有什麼不同?
- 3. 什麼是PHP不同的賦值運算符,它們有什麼不同
- 4. 稀疏矢量,它們是什麼?
- 5. com.isomorphic.datasource。*和com.smartgwt.client.data。*,它們有什麼不同?
- 6. CXXSources--它們是什麼?
- 7. 什麼是C++模塊,它們與命名空間有什麼不同?
- 8. MIPS異常它們是什麼意思
- 9. 它們與asyncMode的含義是什麼?
- 10. PHP變量似乎是相同的,但它們並不相同
- 11. 如果字符串是矢量,爲什麼它們是不變的?
- 12. IIS/ASP.NET的所有用戶帳戶是什麼?它們有什麼不同?
- 13. Apache錯誤,它們是什麼意思?
- 14. 什麼是Maven的目標和階段,它們有什麼不同?
- 15. SQL,Postgres OID,它們是什麼以及它們爲什麼有用?
- 16. '元組變量',它們是什麼以及爲什麼使用它們? (包括代碼)
- 17. CSS中的變量 - 爲什麼不能使用它們?
- 18. 爲什麼公用塊變量不保存它們的值?
- 19. Java中的引用變量究竟是什麼?它與其他變量有什麼不同?
- 20. 術語「共享變量」是什麼意思?它與「全局變量」有什麼不同?
- 21. 爲什麼我們需要投放變量而不分配它?
- 22. 谷歌的Dremel是什麼?它與Mapreduce有什麼不同?
- 23. 什麼是仿函數,爲什麼我們需要它們?
- 24. 什麼是EJB回調,爲什麼我們需要它們?
- 25. SilverStripe可以做什麼不同類型的「刷新」,它們有什麼不同?
- 26. PHP中會話變量的確切用法是什麼?它與會話ID有什麼不同?
- 27. 機械化什麼是cookiejar,它與餅乾有什麼不同?
- 28. 什麼是Dockerfile.dev,它與Dockerfile有什麼不同
- 29. 什麼是mdToken,它與MethodTable有什麼不同?
- 30. 什麼是CLI/C++?它與'普通'C++有什麼不同?
那麼,你說的是命名常量,你的例子沒有提供一個名字(假設'$ a'是未定義的)。也許你的意思是'define('a',365);' – webbiedave 2010-12-13 15:24:34