我有一个与 $_SESSION
变量有很多接口(interface)的类。如果未指定,某些功能应默认为当前用户。我在 $_SESSION['userid']
中有用户 ID,并在某些地方使用它。但是,当我尝试使用 $_SESSION 变量作为函数参数的默认值时,出现错误。执行此操作的最佳方法是什么?
这是我收到的错误:
fatal error :常量表达式在 main.php 中包含无效操作
<?php
class User {
public function log_out() {
unset($_SESSION['userid']);
}
public function get_data($uid = $_SESSION['userid']) {
}
public function logged_in() {
return isset($_SESSION['userid']);
}
public function enabled($uid = $_SESSION['userid']) {
}
}
?>
最佳答案
不能在方法签名中使用变量。您可以将 $uid 参数默认为 null。然后,如果 $uid 为 null,则在函数主体中使用 session 中的值。
示例
您无法执行此操作:
public function get_data($uid = $_SESSION['userid']) {
}
但是,这很好:
public function get_data($uid = null) {
$uid = $uid ?? $_SESSION['userid'];
}
关于PHP 在类函数中使用 $_SESSION 变量作为默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54819884/