在CodeIgniter中设置常量不起作用

时间:2013-04-10 05:03:28

标签: php codeigniter-2

我在.application / config / constants.php中为原始http发布数据设置常量,如下所示:

define('POST_DATA', json_decode($GLOBALS["HTTP_RAW_POST_DATA"], true));

所以我可以添加从控制器向模型发送常量POST_DATA,如下所示:

$data['data'] = $this->logins_model->signup(POST_DATA);

但我收到以下错误......

  

严重性:通知

消息:使用未定义的常量   POST_DATA - 假设'POST_DATA'

文件名:   控制器/ logins.php

然而,当我这样做时,我检查并将发布的数据发送给模型:

$data['data'] = $this->logins_model->signup(json_decode($GLOBALS["HTTP_RAW_POST_DATA"], true));

关于我做错的任何想法?我是否正确使用常量文件?

2 个答案:

答案 0 :(得分:1)

json_decode返回数组或对象,PHP常量不能是数组或对象。只允许scalar and null values

HTTP_RAW_POST_DATA对于每个请求都会有所不同,不是吗?所以,不要使用常量。只需在需要时将其存储在变量中即可。

答案 1 :(得分:1)

您无法将constant设为arrayjson_deocde生成一个数组,因此不会设置常量。

Constants may only evaluate to scalar values

常数的要点是制作一些无法改变的东西。

但是如果你想设置数据,那么你可以serialize数据并设置为常数,当你需要数据unserialize时,常数值

define('POST_DATA', serialize(json_decode($GLOBALS["HTTP_RAW_POST_DATA"], true)));

$post_data     = unserialize (POST_DATA);
$data['data'] = $this->logins_model->signup($post_data);