首頁 > 後端開發 > php教程 > PHP self::$abc,如果$abc是一个拼凑变量,怎么办?

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-06-06 20:25:34
原創
1500 人瀏覽過

<code>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;
    }
}
</code>
登入後複製
登入後複製

Errors::set('system');
echo self::$error_message报错。

回复内容:

<code>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;
    }
}
</code>
登入後複製
登入後複製

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 函数说明

另一种是

<code><?php

class AA{
   const BB = "HelloWorld";
}

$key = 'BB';

$f = new ReflectionClass('AA');

echo $f->getConstant($key);
</code>
登入後複製

echo self::{$error_message}

不太明白什么意思,不过。。。
//为什么要这么写呢?
echo self::$error_message;
//为什么不这么写?
echo $error_message;

你的$error_message并不是类属性啊,当然报错了,你直接echo $error_message,不就可以了,那个又不是类属性。

试试在你拼凑的变量外面加上一个{}

比如

<code>class A{
    public $attr_a = 'value_a';
}

$t=new A();
$attr = 'attr_a';
echo $t->{$attr};
</code>
登入後複製

只试过引用普通变量,没试过静态变量,手机没发调试,楼主自己试试看。

这样写
echo constant('self::' . $error_message);

<code>echo self::$error_message;</code>
登入後複製

改成

<code>echo $error_message;</code>
登入後複製

$error_message不是静态变量

相關標籤:
php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
怎麼學好php
來自於 1970-01-01 08:00:00
0
0
0
PHP擴充intl
來自於 1970-01-01 08:00:00
0
0
0
php數據獲取?
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板