我有一个在我的代码中使用的配置类。此类中的一个变量是网站 URL。最近,我向我的服务器添加了 SSL,现在我需要对此进行检查并将“http”或“https”指定为协议(protocol)。
我试过的代码是:
<?php
class Test
{
public static $blah = (1 == 1) ? 'this' : 'or this';
}
echo Test::$blah;
?>
这会产生一个解析错误。
最佳答案
不幸的是,您不能使用表达式设置默认类变量。您只能使用原始类型和值。只有 array()
被识别。
您可以做的是创建一个“静态初始化器”函数,该函数只能调用一次并将设置您的变量...因此:
<?php
class Test
{
public static $blah;
private static $__initialized = false;
public static function __initStatic() {
if(self::$__initialized) return;
self::$blah = (1 == 1) ? 'this' : 'or this';
self::$__initialized = true;
}
}
Test::__initStatic();
然后只需从您的其他文件中获取您的变量:
<?php
echo Test::$blah;
如果您稍后在代码中编辑 Test::$blah
,它不会因意外调用 Test::__initStatic()
而恢复。
关于php - 解析错误在 PHP 中设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3368760/