Правильный JSON ответ в Codeigniter

Используя AJAX в приложениях Codeigniter, нередко нужно возвращать результат выполнения скрипта в формате JSON. Хоть и стандартного способа в Codeigniter нет, это легко исправить. Достаточно переопределить файл ядра Output.php и добавить один метод.

Для этого создадим новый php файл в папке core Codeigniter приложения, по умолчанию это /application/core/MY_Output.php. Далее нужно написать следующий код:

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class MY_Output extends CI_Output
{
    /**
     * Выводит данные в формате JSON
     * @param $data массив данных, который нужно возвратить в JSON
     */
    function json($data)
    {
        $this->set_content_type('application/json');
        $this->final_output = json_encode($data);
        return $this;
    }
}

Здесь мы определяем новый метод json($data) для системного класса Output.php. Он принимает массив, который будет преобразован в JSON и отправлен как результат AJAX запроса браузеру.

Приведу простейший пример, как пользоваться новым методом:

// ...
public function ajax_result() {

    $result = array(
        'status' => 'success',
        'message' => 'Операция успешно выполнена',
    );

    // Возвращаем результат выполнения в JSON
    $this->output->json($result);
}