• 技术文章 >后端开发 >php教程

    PHP self::$abc,如果$abc是一个拼凑变量,怎么办?

    2016-06-06 20:25:34原创855
    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不是静态变量

    php入门到就业线上直播课:查看学习

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:php
    上一篇:phpstorm 新建remote项目,如何在使用git切换分支的时候能够同步最新的文件到远程开发环境? 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 你知道如何用PHP实现多进程吗• PHP与MySQL连接的方法总结• 求解:phpcms模板怎样转码?该怎么解决• php 之 cookie 跟 session 简单解读(笔记)• php怎的快捷知道某个函数在哪个文件用过
    1/1

    PHP中文网