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 这位朋友找到的.
我只是转过来.
有两种方式:
第一种是:
<?php
class AA{
const BB = "HelloWorld";
const CC = "HelloWorld";
public static function set($code){
echo constant('self::' . $code);
}
}
$key = 'BB';
AA::set($key);
$key = 'CC';
AA::set($key);constant 函数说明
立即学习“PHP免费学习笔记(深入)”;
另一种是
<?php
class AA{
const BB = "HelloWorld";
}
$key = 'BB';
$f = new ReflectionClass('AA');
echo $f->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不是静态变量
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号