我有一個類中類似如果我在課堂上定義了某些東西,我該如何在課堂內調用?
define("__ROOT_PATH__", "http://{$_SERVER['HTTP_HOST']}/admin");
。我如何從函數內部調用它與科隆?我試着在谷歌上查找,但沒有。
謝謝
我有一個類中類似如果我在課堂上定義了某些東西,我該如何在課堂內調用?
define("__ROOT_PATH__", "http://{$_SERVER['HTTP_HOST']}/admin");
。我如何從函數內部調用它與科隆?我試着在谷歌上查找,但沒有。
謝謝
只需使用常量的名稱。
即
echo "Root path is " . __ROOT_PATH__;
功能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;
我認爲我更喜歡你的答案,它更簡潔:我只是簡單地在Test類的函數中添加,你可以使用`self :: ROOT_PATH`引用常量 – PCheese 2009-06-08 06:29:46
使用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();
好的,謝謝大家。 – SarmenHB 2009-06-08 06:54:28