php 无法打印静态变量-受另一个常量影响

1l5u6lss  于 2023-03-28  发布在  PHP
关注(0)|答案(1)|浏览(100)

给定以下代码:

class Weather
{
    const START_DATE_HOLDER = "XXSSXX";
    const END_DATE_HOLDER   = "XXEEXX";

    //THIS STATIC IS NOT REFERENCED BUT AFFECTS "$Q" , omitting this eliminates issue
    public static $Q_ANYDAY = 'A ' . START_DATE_HOLDER;

    public static $Q = 'test';

    public static function getDaysWx(string $wxDate)
    {
        print($wxDate);
        print(self::START_DATE_HOLDER);
        print(self::$Q);
        print('Hello');
    }
}

调用

Weather::getDaysWx('2023-03-25');

印刷品

2023-03-25
XXSSXX

并且打印'test'和“hello”。(我怀疑它在第三次打印时出错了。)
在我的试驾车里

error_reporting(E_ALL);

但不显示错误。
为什么它不打印第3和第4行。任何帮助是感激的。

lp0sw83n

lp0sw83n1#

您需要使用SELF::来寻址常量或静态

public static $Q_ANYDAY = 'A ' . SELF::START_DATE_HOLDER;

还是像你原来的那样

static $Q_ANYDAY = 'https://weather.visualcrossing.com/VisualCrossingWebServices/rest/services/timeline/xx%20city%20xx/' . 
        SELF::START_DATE_HOLDER . 
        '/' . 
        SELF::END_DATE_HOLDER . 
        '?unitGroup=us&elements=datetime%2Ctempmax%2Ctempmin&include=days&key=xxx&contentType=json';

代码的前两行

print($wxDate);
print(self::START_DATE_HOLDER);

正确地处理变量,因此这两行可以工作

相关问题