2009-06-08 44 views

回答

0

只需使用常量的名稱。

echo "Root path is " . __ROOT_PATH__; 
11

功能define()是爲全局常量,所以你只需要使用字符串__ROOT_PATH__(我會建議使用另一種命名方案,但。常量開始以兩個下劃線是由PHP保留給自己magic constants

define('__ROOT_PATH__', 'Constant String'); 
echo __ROOT_PATH__; 

如果要聲明一個類常量,使用const keyword

class Test { 
    const ROOT_PATH = 'Constant string'; 
} 
echo Test::ROOT_PATH; 

雖然有一個問題:在解析腳本時評估類常量,所以不能在這些常量中使用其他變量(所以你的例子不起作用)。使用define()工程,因爲它像任何其他函數一樣處理,並且可以動態定義常量值。

編輯

由於PCheese指出的那樣,你可以使用關鍵字self從類中訪問,而不是類名類的常量,:

class Test { 
    const ROOT_PATH = 'Constant string'; 
    public function foo() { 
     echo self::ROOT_PATH; 
    } 
} 
# You must use the class' name outside its scope: 
echo Test::ROOT_PATH; 
+0

我認爲我更喜歡你的答案,它更簡潔:我只是簡單地在Test類的函數中添加,你可以使用`self :: ROOT_PATH`引用常量 – PCheese 2009-06-08 06:29:46

3

使用define將定義常量全球範圍內,所以只是指它直接在您的代碼:

echo __ROOT_PATH__; 

如果您想將常量範圍限定到某個類,則需要以不同的方式聲明它。但是,該語法不會像上面那樣動態聲明它,使用$_SERVER

<?php 
class MyClass { 
    const MY_CONST = "foo"; 
    public function showConstant() { 
     echo self::MY_CONST; 
    } 
} 

// Example: 
echo MyClass::MY_CONST; 
$c = new MyClass(); 
$c->showConstant();