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

WBOY
Freigeben: 2016-06-06 20:25:34
Original
1432 Leute haben es durchsucht

<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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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

下面的内容是 @Tranch 这位朋友找到的.
我只是转过来.

有两种方式:
第一种是:

<code class="php"><?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);</code></code>
Nach dem Login kopieren

constant 函数说明

另一种是

<code><?php class AA{
   const BB = "HelloWorld";
}

$key = 'BB';

$f = new ReflectionClass('AA');

echo $f->getConstant($key);
</code>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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

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

<code>echo self::$error_message;</code>
Nach dem Login kopieren

改成

<code>echo $error_message;</code>
Nach dem Login kopieren

$error_message不是静态变量

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage