在类中访问静态数组时出现语法错误

时间:2015-09-15 16:47:05

标签: php

public static $config = array(
    'base_url' => '',
    'environment' => '',
    'database' => array(
        'dbdriver' => '',
        'dbhost'   => '',
        'dbname'   => '',
        'dbuser'   => '',
        'dbpass'   => ''
    ),

我想访问base_url密钥并将其分配给新的静态属性$ app,但它给出了意外[的语法错误

public static $app_path = self::config['base_url']; //unexpected [ error

3 个答案:

答案 0 :(得分:2)

您想要访问变量,因此您必须添加$

self::$config['base_url']

详细了解here

不幸的是,您无法将任何变量(甚至是静态)分配给其他静态属性,如链接手册页中所示。

  

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

答案 1 :(得分:1)

阅读手册:

  

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

Right here

在你认为这是一个严重的限制之前,让我告诉你为什么这是一个幸福的救济:

np.unique

但是,当你引入后期静态绑定(我们都喜欢的东西)时:

class Foo
{
    public static $evil = array('bar' => 123);
    public static $check = self::$evil['bar'];
}
Foo::$check;//all is well

TL; TR:静态类似于超级全局:你可以用常量表达式初始化它们,但是它们不能要求初始化状态,这将是初始疯狂

答案 2 :(得分:1)

您已经启动了(静态)属性的方式尚未在PHP中实现 您可以查看此主题的解释:https://stackoverflow.com/a/1633024/4098311

但是,这就是我在项目中的表现:

example.0.txt