【问题标题】:What's the technical reason why class constants can't be arrays in PHP?PHP中类常量不能是数组的技术原因是什么?
【发布时间】:2010-01-24 11:48:17
【问题描述】:

任何人都知道这个约束被置于 PHP 类(至少在 v5.1x 中)的技术原因吗?

【问题讨论】:

    标签: php arrays constants


    【解决方案1】:

    数组是可变的——你可以修改它们。您可以改用静态属性。

    【讨论】:

      【解决方案2】:

      常量不能包含可变类型。常数是不能改变的“变量”;它不能被赋值,但如果它的值是可变的,那么它可以通过改变值来改变:

      class SomeClass
      {
          public const $array = array(0 => 'foo', 1 => 'bar');
      
          public static function someFunction()
          {
              self::$array[0] = 'baz'; // SomeClass::$array has now changed.
          }
      }
      

      【讨论】:

      • “常数是不能改变的“变量”” WTF? “死星是一辆蓝色的红色汽车。”失败!
      • @sims:因此我使用引号来表示这是一个微不足道的比较,不应该从字面上理解,实际上是自相矛盾的。
      • 写逻辑时,字面意思是有帮助的。
      • @sims:“变量”是新手最开心/最熟悉的命名法;我试图用外行的话来说。另外,我不是在写逻辑。我的意思很清楚,所以不要再迟钝了:)
      【解决方案3】:

      不知道为什么,但是可以初始化静态数组变量:

      class myClass {
         public static $arr = Array ('foo', 'bar'); 
      }
      

      注意数组是变量,所以可以在外面修改...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-03
        • 2016-12-05
        • 2010-11-03
        • 2011-10-16
        • 2011-01-20
        • 2012-05-14
        • 1970-01-01
        相关资源
        最近更新 更多