gpt4 book ai didi

php - 来自构造函数的 Codeigniter 变量未定义

转载 作者:可可西里 更新时间:2023-10-31 23:56:25 24 4
gpt4 key购买 nike

我正在使用 CI 的 Auth Tank 库查询特定用户的记录。

变量 $user_id = tank_auth->get_user_id(); 从 session 中获取用户 ID。我想在 user_id = $user_id 处提取记录。

据我了解,构造函数可以在每次启动类时加载变量。有点像全局变量。所以我想我会在模型构造函数中设置我的 $user_id,这样我就可以将它用于模型类中的多个函数。

class My_model extends Model {

function My_model()
{
parent::Model();
$user_id = $this->tank_auth->get_user_id();
}

function posts_read() //gets db records for the logged in user
{
$this->db->where('user_id', $user_id);
$query = $this->db->get('posts');
return $query->result();
}
}

接下来,我要加载模型,在我的 Controller 中创建一个数组,然后将数据发送到我有一个 foreach 循环的 View 。

测试时我得到

Message: Undefined variable: user_id

在我的模型中。但是,如果我在我的 posts_read 函数中定义 $user_id 变量,它会起作用,但我不想在每个需要它的函数中都定义它。

我在这里做错了什么?

最佳答案

变量范围问题。您应该创建类级变量,以便它在其他函数中可用,就像这样:

class My_model extends Model {
private $user_id = null;

function My_model()
{
parent::Model();
$this->user_id = $this->tank_auth->get_user_id();
}

// gets db records for the logged in user
function posts_read()
{
$this->db->where('user_id', $this->user_id);
$query = $this->db->get('posts');
return $query->result();
}
}

注意在类声明之后添加了 $user_id,稍后将与 $this->user_id 一起使用 :)

关于php - 来自构造函数的 Codeigniter 变量未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4640886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com