【问题标题】:php function inside array数组中的php函数
【发布时间】:2016-10-16 05:01:58
【问题描述】:

我尝试在数组中存储一个函数,但它一直给我这个错误

意外的“功能”(T_FUNCTION)

我在网上看了一圈,但他们大多说我应该使用 php 5.3 及更高版本,而我使用的是5.6.21

这是我的数组:

       static $Events = array(
            'View Page' => array(
                'properties' => array(
                    'previous_event',
                    'number_view_page',
                ),
                'trigger' => function($foo){
                    return $foo;
                },
            ),
        );

如果有人知道问题是什么以及如何解决,请帮助我:)

【问题讨论】:

标签: php arrays function compiler-errors


【解决方案1】:

static 值需要使用静态/常量 表达式进行初始化。可悲的是,匿名函数还不够“恒定”而无法计数。后来的 PHP 版本允许一些有限的表达式,比如2 + 4(因为结果总是不变的),但仅此而已。函数声明过于复杂,无法在 static 上下文中处理(您可以随时将函数添加到数组之后,只是不能初始化它*)。

* 此限制的原因是static 声明在与运行时代码不同的解析阶段处理,并且解析阶段只能处理原始值。

【讨论】:

  • 我更改了事件处理,但仍然感谢您!你解释的很清楚!
【解决方案2】:

再试一次(你有 2 ,, 代码末尾太多,请删除静态)

编辑:添加函数,以便您可以使用其他类的数组。

function $events_func()
{
    $events = array(
        'View Page' => array(
            'properties' => array(
                'previous_event',
                'number_view_page',
            ),
            'trigger' => function($foo){
                return $foo;
            }
        )
    );
return $events;
}

【讨论】:

  • 这并不能解决任何问题,我使用的是静态的,因为它位于辅助类中,因此可以在任何控制器函数中使用
  • 你应该在你的帮助类中创建一个函数方法来返回这个数组。然后你可以在你的控制器函数中使用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多