解析错误在PHP中设置变量

时间:2010-07-30 04:48:05

标签: php variables

我有一个在我的代码中使用的配置类。此类中的一个变量是网站URL。最近,我将SSL添加到我的服务器,现在我需要检查这个并指定'http'或'https'作为协议。

我尝试的代码是:

<?php

class Test
{
   public static $blah = (1 == 1) ? 'this' : 'or this';
}

echo Test::$blah;

?>

这会产生解析错误。

2 个答案:

答案 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;

?>