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
相关产品推荐
相关产品推荐

