PHP self::$abc,如果$abc是一个拼凑变量,怎么办?
高洛峰
高洛峰 2017-04-10 16:15:03
[PHP讨论组]
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报错。

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(6)
迷茫

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中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号