You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP类中能否存储箭头函数/匿名函数到变量?为何报错?

问题解答

你遇到的错误原因是:PHP类属性的默认初始化值必须是常量表达式,而匿名函数、箭头函数属于需要在运行时创建的动态表达式,不能直接作为属性的默认值写在类的属性声明里,并非不能在类中使用它们。

正确的实现方式

你可以通过类的构造函数来给属性赋值匿名函数或箭头函数,代码示例如下:

<?php

class example{
    var $func;
    var $fn;

    public function __construct() {
        // 在构造函数中赋值匿名函数
        $this->func = function () {
            return 1 + 2;
        };
        // 在构造函数中赋值箭头函数
        $this->fn = fn() => 1 + 2;
    }
}

调用这些变量函数

实例化类后,需要注意调用方式(避免PHP将属性调用解析为类方法调用):

$obj = new example();
echo ($obj->func)(); // 输出 3
echo ($obj->fn)();  // 输出 3

补充(PHP 8.0+ 简化写法)

如果你的PHP版本是8.0及以上,可以使用构造函数属性提升简化代码:

<?php

class example{
    public function __construct(
        public $func = null,
        public $fn = null
    ) {
        $this->func = function () {
            return 1 + 2;
        };
        $this->fn = fn() => 1 + 2;
    }
}

内容的提问来源于stack exchange,提问作者Rogan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 21:40:26