【问题标题】:How to specify a static class member as a value of an array property, when defining the array in PHP?在 PHP 中定义数组时,如何将静态类成员指定为数组属性的值?
【发布时间】:2015-04-30 14:29:22
【问题描述】:

这行不通:

class Someclass {
   public static $v = '28';
   private static $a = Array (
      'theNumber' => self::$v
   );
}

它产生:

PHP 解析错误:语法错误,意外的 '$v' (T_VARIABLE),需要标识符 (T_STRING) 或类 (T_CLASS)

如何让theNumber 使用Someclass 的静态成员作为值?

编辑: 请在回答或“标记为重复”之前阅读问题,这个问题与语法无关。是否可以在数组中使用静态变量(不是)。

【问题讨论】:

  • 你使用的是什么版本的 PHP?
  • 不是答案,但你应该把“theNumber”放在引号里
  • 我使用的是 5.5 版
  • (现在是带引号的)
  • @John Conde - 我看不出与您标记为该问题重复的问题有任何关系。我的问题是如何将静态 var 用作数组的值,它与语法无关(即使我引用了语法错误),而是与功能有关。无论如何,我现在明白只允许在那里使用常量是有意义的,功能方面的(因为在初始化类时初始化了数组)。该问题的解决方案是简单地向类中添加一个函数,该函数会更改数组的特定属性。

标签: php arrays static


【解决方案1】:

只使用一个常量:

class Someclass {
   const NUM = '28';
   public static $v = NUM;
   private static $a = Array (
      'theNumber' => NUM
   );
}

【讨论】:

  • 如果我希望在使用类时该值可以更改怎么办?
  • @YuvalA.,您不能更改 const 但可以更改两个静态值。如果您的意思是希望在更改第三个变量时两个静态值都自动更改,那么您也不能这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-02
  • 2014-03-24
  • 1970-01-01
  • 1970-01-01
  • 2018-05-31
相关资源
最近更新 更多