代码之家  ›  专栏  ›  技术社区  ›  altralaser

类属性的串联不起作用[duplicate]

  •  0
  • altralaser  · 技术社区  · 7 年前

    考虑以下几点:

    $var = 'foo' . 'bar'; # Not a member of a class, free-standing or in a function.
    

    我一做标记 $var 作为 static 但是:

    static $var = 'foo' . 'bar';
    

    PHP(在WAMP设置中为5.3.1)出现以下错误:

    解析错误 :语法错误,意外的“.”,应为“,”或“;”


    这是怎么回事?有人能给我解释一下静态变量的规则吗?

    0 回复  |  直到 15 年前
        1
  •  12
  •   netcoder    15 年前

    Variables scope

    尝试将值赋给这些作为表达式结果的[静态]变量将导致分析错误。

    在书中也提到了这一点 Static keyword :

    与任何其他PHP静态变量一样,静态属性只能使用文本或常量初始化;不允许使用表达式。

    尽管应该注意的是,属性,不管是静态的还是非静态的,都不能用表达式初始化。

        2
  •  4
  •   StasM    15 年前

    不能在初始值设定项中使用表达式。但是,您可以这样做:

    define('FOOBAR', 'foo'.'bar');
    static $var = FOOBAR;
    echo $var;
    

    鲜为人知的事实是,即使初始值设定项不能包含运行时表达式,它也可以包含可以在运行时定义和解析的常量。常数必须由时间来定义 $var "FOOBAR" ).

        3
  •  1
  •   Cheeso    14 年前

    class MyClass {
    
      static $var1;
      static $var2;
      public static function _init() {
          self::$var1 = 'slkslk' . 'sksks' . 'arbitrary' ; 
          self::var2 = <<<EOT
              <root>
                <elem1>skjsksj</elem1>
              </root>
    EOT;
      }
    }
    MyClass::_init();
    
    推荐文章