我有一个在我的代码中使用的配置类。此类中的一个变量是网站URL。最近,我将SSL添加到我的服务器,现在我需要检查这个并指定'http'或'https'作为协议。
我尝试的代码是:
<?php
class Test
{
public static $blah = (1 == 1) ? 'this' : 'or this';
}
echo Test::$blah;
?>
这会产生解析错误。
答案 0 :(得分:3)
不幸的是,您无法使用表达式设置默认类变量。您只能使用原始类型和值。只识别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()
而将其恢复。
答案 1 :(得分:2)
您无法使用计算来确定对象属性值。你需要这样做:
<?php
class Test
{
public static $blah;
}
// set the value here
Test::$blah = (1 == 1) ? 'this' : 'or this';
echo Test::$blah;
?>