class Errors extends Object{ public static $message, $code; const SYSTEM_CODE = 'system'; const SYSTEM_MESSAGE = 'system error'; public static function set($code, $params = []) { $error_code = strtoupper($code) . '_CODE'; $error_message = strtoupper($code) . '_MESSAGE'; echo self::$error_message; }}
Errors::set('system');
echo self::$error_message報錯。
回複內容:
class Errors extends Object{ public static $message, $code; const SYSTEM_CODE = 'system'; const SYSTEM_MESSAGE = 'system error'; public static function set($code, $params = []) { $error_code = strtoupper($code) . '_CODE'; $error_message = strtoupper($code) . '_MESSAGE'; echo self::$error_message; }}
Errors::set('system');
echo self::$error_message報錯。
下面的內容是 @Tranch 這位朋友找到的.
我只是轉過來.
有兩種方式:
第一種是:
constant
函數說明
另一種是
getConstant($key);
echo self::{$error_message}
不太明白什麼意思,不過。。。
//為什麼要這麼寫呢?
echo self::$error_message;
//為什麼不這麼寫?
echo $error_message;
你的$error_message並不是類屬性啊,當然報錯了,你直接echo $error_message,不就可以了,那個又不是類屬性。
試試在你拼湊的變數外面加上一個{}
比如
class A{ public $attr_a = 'value_a';}$t=new A();$attr = 'attr_a';echo $t->{$attr};
只試過引用普通變數,沒試過靜態變數,手機沒發調試,樓主自己試試看。
這樣寫
echo constant('self::' . $error_message);
echo self::$error_message;
改成
echo $error_message;
$error_message不是靜態變數