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

PHP中如何将函数返回值作为另一函数参数?类方法报错解决

解决PHP中函数默认参数使用实例属性/方法返回值的问题

你碰到的「Constant expression contains invalid operations」错误,核心原因是PHP的函数默认参数只能是常量表达式——也就是在代码编译阶段就能确定值的内容(比如固定字符串、数字、null),而$this->usrname是实例的动态属性,属于运行时才能确定的值,所以不能直接放在参数默认值里。

修正方案

我们可以把默认值的逻辑移到函数内部来处理,用null作为参数的占位默认值,然后在函数里判断并动态赋值:

<?php
class Common {
    public $usrname;

    function getLoggedInUser(){
        if (isset($_SESSION['email'])) { // 注意isset是小写,PHP关键字虽不区分大小写但小写更规范
            $this->usrname = $_SESSION['email'];
            return $this->usrname;
        }
        return false;
    }

    function getLoggedInUserId($username = null){
        // 未传入参数时,调用getLoggedInUser获取默认值
        if ($username === null) {
            $username = $this->getLoggedInUser();
        }
        echo $username;
    }
}

调用代码的小修正

另外你的调用代码里遗漏了分号,还有别忘了开启Session(否则$_SESSION无法获取值),修正后如下:

<?php
include "common.php"; // 补上分号
session_start(); // 必须开启Session才能读取$_SESSION
$c = new Common;
$c->getLoggedInUserId();

这样修改后,当你不传参数调用getLoggedInUserId()时,就会自动用getLoggedInUser()的返回值作为默认参数了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:06:47