############ Output Class ############ The Output class is a core class with one main function: To send the finalized web page to the requesting browser. It is also responsible for :doc:`caching <../general/caching>` your web pages, if you use that feature. .. note:: This class is initialized automatically by the system so there is no need to do it manually. Under normal circumstances you won't even notice the Output class since it works transparently without your intervention. For example, when you use the :doc:`Loader <../libraries/loader>` class to load a view file, it's automatically passed to the Output class, which will be called automatically by CodeIgniter at the end of system execution. It is possible, however, for you to manually intervene with the output if you need to. .. contents:: :local: .. raw:: html
*************** Class Reference *************** .. class:: CI_Output .. attribute:: $parse_exec_vars = TRUE; Enables/disables parsing of the {elapsed_time} and {memory_usage} pseudo-variables. CodeIgniter will parse those tokens in your output by default. To disable this, set this property to FALSE in your controller. :: $this->output->parse_exec_vars = FALSE; .. method:: set_output($output) :param string $output: String to set the output to :returns: object Permits you to manually set the final output string. Usage example:: $this->output->set_output($data); .. important:: If you do set your output manually, it must be the last thing done in the function you call it from. For example, if you build a page in one of your controller functions, don't set the output until the end. .. method:: set_content_type($mime_type[, $charset = NULL]) :param string $mime_type: MIME Type idenitifer string :param string $charset: Character set :returns: object Permits you to set the mime-type of your page so you can serve JSON data, JPEG's, XML, etc easily. :: $this->output ->set_content_type('application/json') ->set_output(json_encode(array('foo' => 'bar'))); $this->output ->set_content_type('jpeg') // You could also use ".jpeg" which will have the full stop removed before looking in config/mimes.php ->set_output(file_get_contents('files/something.jpg')); .. important:: Make sure any non-mime string you pass to this method exists in *application/config/mimes.php* or it will have no effect. You can also set the character set of the document, by passing a second argument:: $this->output->set_content_type('css', 'utf-8'); .. method:: get_content_type() :returns: string Returns the Content-Type HTTP header that's currently in use, excluding the character set value. :: $mime = $this->output->get_content_type(); .. note:: If not set, the default return value is 'text/html'. .. method:: get_header($header) :param string $header: HTTP header name :returns: string Returns the requested HTTP header value, or NULL if the requested header is not set. Example:: $this->output->set_content_type('text/plain', 'UTF-8'); echo $this->output->get_header('content-type'); // Outputs: text/plain; charset=utf-8 .. note:: The header name is compared in a case-insensitive manner. .. note:: Raw headers sent via PHP's native ``header()`` function are also detected. .. method:: get_output() :returns: string Permits you to manually retrieve any output that has been sent for storage in the output class. Usage example:: $string = $this->output->get_output(); Note that data will only be retrievable from this function if it has been previously sent to the output class by one of the CodeIgniter functions like ``$this->load->view()``. .. method:: append_output($output) :param string $output: Additional output data to append :returns: object Appends data onto the output string. :: $this->output->append_output($data); .. method:: set_header($header[, $replace = TRUE]) :param string $header: HTTP Header :param bool $replace: Whether to replace the old header value, if it is already set :returns: object Permits you to manually set server headers, which the output class will send for you when outputting the final rendered display. Example:: $this->output->set_header('HTTP/1.0 200 OK'); $this->output->set_header('HTTP/1.1 200 OK'); $this->output->set_header('Last-Modified: '.gmdate('D, d M Y H:i:s', $last_update).' GMT'); $this->output->set_header('Cache-Control: no-store, no-cache, must-revalidate'); $this->output->set_header('Cache-Control: post-check=0, pre-check=0'); $this->output->set_header('Pragma: no-cache'); .. method:: set_status_header([$code = 200[, $text = '']]) :param int $code: HTTP status code :param string $text: Optional message :returns: object Permits you to manually set a server status header. Example:: $this->output->set_status_header('401'); // Sets the header as: Unauthorized `See here