公共静态变量值

发布于 2024-11-17 16:49:18 字数 498 浏览 2 评论 0原文

我试图声明一个公共静态变量,它是一个数组数组:

class Foo{
 public static $contexts = array(
    'a' => array(
      'aa'              => something('aa'),
      'bb'              => something('bb'),
    ),

    'b' => array(
      'aa'              => something('aa'),
      'bb'              => something('bb'),
    ),

  );

 // methods here

 }

 function something($s){
   return ...
 }

但我收到一个错误:

解析错误:解析错误,期待 `')'' 在...

I'm trying to declare a public static variable that is a array of arrays:

class Foo{
 public static $contexts = array(
    'a' => array(
      'aa'              => something('aa'),
      'bb'              => something('bb'),
    ),

    'b' => array(
      'aa'              => something('aa'),
      'bb'              => something('bb'),
    ),

  );

 // methods here

 }

 function something($s){
   return ...
 }

But I get a error:

Parse error: parse error, expecting
`')'' in ...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

北渚 2024-11-24 16:49:18

声明类属性时不能使用表达式。即你不能在这里调用something(),你只能使用静态值。在某些时候,您必须在代码中以不同的方式设置这些值。

与任何其他 PHP 静态变量一样,静态属性只能使用文字或常量进行初始化;不允许使用表达式。因此,虽然您可以将静态属性初始化为整数或数组(例如),但您不能将其初始化为另一个变量、函数返回值或对象。

http://www.php.net/manual/en/语言.oop5.static.php

例如:

class Foo {
    public static $bar = null;

    public static function init() {
       self::$bar = array(...);
    }
}

Foo::init();

或者如果您要实例化该类,则在 __construct 中执行此操作。

You can't use expressions when declaring class properties. I.e. you can't call something() here, you can only use static values. You'll have to set those values differently in code at some point.

Like any other PHP static variable, static properties may only be initialized using a literal or constant; expressions are not allowed. So while you may initialize a static property to an integer or array (for instance), you may not initialize it to another variable, to a function return value, or to an object.

http://www.php.net/manual/en/language.oop5.static.php

For example:

class Foo {
    public static $bar = null;

    public static function init() {
       self::$bar = array(...);
    }
}

Foo::init();

Or do it in __construct if you're going to instantiate the class.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文