1. 程式人生 > >php const和define的區別(php類中如何定義常量)

php const和define的區別(php類中如何定義常量)

大家都知道define是定義常量的,如果在類中定義常量呢?當然不能用define,而用const,如下例:

  1. <?php
  2. //在類外面通常這樣定義常量
  3. define("PHP","phpddt.com");
  4. classMyClass
  5. {
  6. //常量的值將始終保持不變。在定義和使用常量的時候不需要使用$符號
  7. const constant ='constant value';
  8. function showConstant(){
  9. echo self::constant ."<br>";
  10. }
  11. }
  12. echo MyClass::constant ."<br>";
  13. $classname ="MyClass"
    ;
  14. echo $classname::constant ."<br>";// PHP 5.3.0之後
  15. $class =newMyClass();
  16. $class->showConstant();
  17. echo $class::constant."<br>";// PHP 5.3.0之後
  18. //print_r(get_defined_constants()); //可以用get_defined_constants()獲取所有定義的常量
  19. ?>

關於常量的基礎知識,這裡不說了,除了以上,define和const的其它區別(摘自網路):

1.const不能再條件語句中定義常量,但是define是可以的,如下:

  1. <?php
  2. if(1){
  3. const a ='java';
  4. }
  5. echo a;//必錯
  6. ?>

2.const採用一個普通的常量名稱,define可以採用表示式作為名稱

  1. <?php
  2. const FOO ='PHP';
  3. for($i =0; $i <32;++$i){
  4. define('PHP_'. $i,1<< $i);
  5. }
  6. ?>

3.const只能接受靜態的標量,而define可以採用任何表示式。

  1. <?php
  2. const PHP =1<<5;// 錯誤
  3. define('PHP',1<<5);// 正確
  4. ?>

4.const本身就是一個語言結構。而define是一個函式。所以使用const速度要快的多。

關於php中const和define的區別就總結這麼多了。


相關推薦

php constdefine區別(php如何定義常量)

大家都知道define是定義常量的,如果在類中定義常量呢?當然不能用define,而用const,如下例: <?php//在類外面通常這樣定義常量define("PHP","phpddt.com");classMyClass{//常量的值將始終保持不變。在定義和使

const#define區別

define巨集是在預處理階段展開。const常量是編譯、執行階段使用 巨集沒有型別,不做任何型別檢查,僅僅是展開。const常量有具體的型別,在編譯階段會執行型別檢查 所有的巨集替換隻是簡單的字串替換,注意是字串替換,所以並不會檢查其合法性,而const定義的常量依然是內建型別等,所以會對其進行型別安全檢

const #define區別

(1) 編譯器處理方式不同   define巨集是在預處理階段展開。   const常量是編譯執行階段使用。 (2) 型別和安全檢查不同   define巨集沒有型別,不做任何型別檢查,僅僅是展開。   const常量有具體的型別,在編譯階段會執行型別檢查。 (

PHPconstdefine()定義常量的細節區別

眾所周知,在PHP中(PHP 4及以後),我們可以使用函式define()來定義常量,例如: <?php define('PI',3.14159);//定義一個名為PI的常量 echo PI;//輸出:3.14159 ?> 不過,在PHP

C++編程const#define區別

程序 存在 pan best color 普通 分配 一次 def (1) 編譯器處理方式不同  define宏是在預處理階段展開。  const常量是編譯運行階段使用。(2) 類型和安全檢查不同  define宏沒有類型,不做任何類型檢查,僅僅是展開。  const常量有

PHP constdefine區別

1、const用於類成員變數定義,一旦定義且不能改變其值。define定義全域性常量,在任何地方都可以訪問。 2、define不能在類中定義而const可以。   3、const不能在條件語句中定義常量 if (...) {      const FOO = 'BAR';

C++const#define的利弊探索

C++學習 C++學習總結 C++靈感 const和#define的利弊,從而推導const的意義; const和#define都有類似的功能,那就是定義一個“常量”; 想用來替換#define定義常量這種方式。這是一種定義宏的方式。因為宏替換定義常量有一定的缺陷:不做類型檢查,沒有作用域限制(這

C語言constdefine區別

一份 安全 font 預處理 tro span ble 展開 區別 const 定義的是變量不是常量,只是這個變量的值不允許改變是常變量!帶有類型。編譯運行的時候起作用存在類型檢查。 define 定義的是不帶類型的常數,只進行簡單的字符替換。在預編譯的時候起作用,不存在類

PHP的"::" "->""=>"的區別

1."::" 運演算法   該運算子是呼叫一個類中的靜態成員的方法,如:  class xxx{   protected static $instance;  self::$instance="111"; 或者 $this::$instance = "222";

php unsetarray_splice區別

平時在設計程式時,經常要應用PHP刪除陣列元素的函式有unset和array_splice,這兩個函式的執行有何差異呢? 用unset,有個缺陷.如$a是一個數組: < ?php $a=array("red", "green", "blue", "yellow"); count($a);

const關鍵字以及const#define區別

1.const - 1.const修飾變數、引數、返回值: 在C++中const修飾變數,使變數變成常量,在宣告的同時必須初始化;C++的const修 飾的全域性變數可以作為屬組的初始化的大小,而C不可以,同時變數的值不能被修改;C++利用const的這一屬性,代替C中的

strlenmb_strlen區別(php獲得中英文混合字元長度)

<?php//測試時檔案的編碼方式要是UTF8$str='中文a字1符';echo strlen($str).'<br>';//14echo mb_strlen($str,'utf8').'<br>';//6echo mb_strlen($str

constdefine的差別

問題 高程 編譯器 參數 fine 返回值 安全檢查 clu 類型安全 1、const有什麽用途?(1)可以定義const常量(2)const可以修飾函數的參數和返回值,甚至函數的定義體。被const修飾的東西都受到強制保護,可以預防以外的變動,能提高程序的健壯性。

PHP定義常量

amp ech spa family pub -s col div new PHP中定義常量的方式如下: define(常量名,常量值); //定義常量PUBLISHER define(‘PUBLISHER‘, "O‘Reilly & Associates");

printprintln預設呼叫的public String toString(){return "***"} 分析

先看下來自mindview的一段程式碼:     package reusing;   //: reusing/Bath.java // Constructor initialization with composit

c++的conststatic區別

const定義的常量在超出其作用域之後其空間會被釋放,而static定義的靜態常量在函式執行後不會釋放其儲存空間。 static表示的是靜態的。類的靜態成員函式、靜態成員變數是和類相關的,而不是和類的具體物件相關的。即使沒有具體物件,也能呼叫類的靜態成員函式和成員變數。一般

java定義常量C#定義常量區別

一、常量定義的基本注意事項。   在Java語言中,主要是利用final關鍵字()來定義常量。當常量被設定後,一般情況下就不允許再進行更改。如可以利用如下的形式來定義一個常量:final double PI=3.1315。在定義這個常量時,需要注意如下內容:   一是常

wait()、notify()notifyAll()是 Object 的方法

從這三個方法的文字描述可以知道以下幾點資訊: 1)wait()、notify()和notifyAll()方法是本地方法,並且為final方法,無法被重寫。 2)呼叫某個物件的wait()方法能讓當前執行緒阻塞,並且當前執行緒必須擁有此物件的monitor(即鎖) 3)呼叫某個物件的notify()方

【Spring原始碼解讀】BeanFactoryFactoryBean區別裝載原始碼解讀

最近讀程式碼讀到Bean裝載過程,順帶上網搜了下BeanFactory和FactoryBean,發現好多文章都講的不清不楚,特此自己來整理了一份BeanFactory和FactoryBean的區別及講下bean的裝載和讀取過程的原始碼.     首先來

定義遞歸方法

聲明 this 調用函數 urn for 數組 eve 函數 調用 public function getTree($list,$pid,$level){ //此處須是靜態數組,不然遞歸的時候每次都會聲明一個新的數組 static $tree = [];