CodeIgniter上的自定义数据类型

时间:2019-04-03 12:24:01

标签: php codeigniter

我正在尝试创建自定义数据类型,以便在需要时更轻松地访问数据。这将是一个简单的php类,其属性可以存储我需要的数据。例如

class Inventory_line {
    public $prod_code;
    public $prod_name;
    public $fmt_code;
    public $fmt_name;
}

我还打算在会话数据中存储一些此类对象。

我正在尝试通过创建具有所需属性的库,然后加载该库并在需要时实例化我的类来实现此目的。我的模型设置属性并返回它们。

$this->load->library('inventory_line');

$line = new inventory_line();
$line->prod_code = 1;
$line->prod_name = 'Product';
$line->fmt_code = 11;
$line->fmt_name = 'Format';

然后我的控制器将对象保存在我的会话用户数据中:

$new_line = $this->inventory_model->get_line();
$this->session->set_userdata('new_line', $new_line);

但是当我尝试访问存储在我的会话数据中的值(在另一个控制器功能中)时,我收到一条错误消息,指示脚本试图执行方法或访问不完整对象的属性< / em>。

$new_line = $this->session->userdata('new_line');
echo $new_line->prod_name;

Q1:我应该如何/在什么地方声明我的班级在CodeIgniter上正常工作?

Q2:是否认为这是不良做法,还是可以采用更好的方法?

编辑::添加了代码示例,并进一步解释了我在做什么。

编辑2:进一步的测试使我发现错误位于从会话中获取对象的位置。

1 个答案:

答案 0 :(得分:0)

我终于找到了解决方案! (阅读this post的答案)

我只需要序列化对象,然后再将其保存到会话数据中,以避免检索对象时出现问题。