Почему отказивается работать post_geson? Всем привет. Вот сижу делаю класс для роботы с данными. Всё работает кроме функции json_decodeclass data { var $data; function get($data) { if (isset($_GET[$data])) { $data = $_GET[$data]; $data = trim(htmlentities($data)); $this->data = $data; } } function post($data) { if (isset($_POST[$data])) { $data = $_POST[$data]; $data = trim(htmlentities($data)); $this->data = $data; } } function post_inc($data) { if (isset($_POST[$data])) { $data = $_POST[$data]; $data = preg_replace('/[^0-9]/','',$data); $this->data = $data; } }
function post_gson($data) { if (isset($_POST[$data])) { $json = $_POST[$data]; $json = json_decode($json); $this->data = $data; } }
function string($data) { $data = trim(htmlentities($data)); $this->data = $data; } function result() { return $this->data; } } Обращаюсь к нему примерно так$data->post_gson('data'); $json = $data->result(); print_r($json); В итоге в переменной $json есть только "data" вместо ожидаемого мной масива. Как быть? С ооп рботаю не долго. А точнее одну ноч)
Проблема заключается в том, что в методе post_gson вы записываете значение переменной $json вместо $this->data. Вам следует исправить это, чтобы метод правильно сохранял декодированный JSON объект. Вот исправленный код:
function post_gson($data) { if (isset($_POST[$data])) { $json = $_POST[$data]; $this->data = json_decode($json); } }
Проблема заключается в том, что в методе post_gson вы записываете значение переменной $json вместо $this->data. Вам следует исправить это, чтобы метод правильно сохранял декодированный JSON объект. Вот исправленный код:
function post_gson($data) {if (isset($_POST[$data])) {
$json = $_POST[$data];
$this->data = json_decode($json);
}
}
После этого ваш планируемый вызов
$data->post_gson('data');$json = $data->result();
print_r($json);
должен работать корректно и переменная $json будет содержать декодированный JSON объект. Надеюсь, это поможет вам решить проблему.