PHP 在类函数中使用 $_SESSION 变量作为默认值

标签 php class default

我有一个与 $_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/

相关文章:

perl - 包含 Perl 类文件

c++ - 导出类成员

angular - Angular 示意图:如何在schema.json中定义默认变量? (项目名称)

传递给类构造函数的 C++ 字符串 - 链接器错误

string - 为 HashMap<_, String> 返回默认 &str

android - 有没有简单的方法可以在 Android 中为 TextView 创建用户默认值?

php - 如果 isset 无法与数据库提取正常工作

php - 来自 MySql 的数据多次显示

php - 拉拉维尔 5.2 : defined user and get information from other database table

php - 使用php访问mysql,如何得到只有数字的查询结果?