<?php /** * MiniMVC * * Convention-based micro-framework for PHP * * @author Timothy J. Warren * @copyright Copyright (c) 2011 - 2012 * @link https://github.com/timw4mail/miniMVC * @license http://philsturgeon.co.uk/code/dbad-license */ // -------------------------------------------------------------------------- /** * Class for displaying output and setting http headers * * @package miniMVC * @subpackage System */ class MM_Output extends MM { /** * Content for outputting * * @var string */ private $buffer; /** * HTTP headers to send * * @var array */ private $headers; /** * Initialize the output class * * @return void */ public function __construct() { $this->buffer = ""; $this->headers = []; } /** * PHP magic method called when ending the script * Used for outputing HTML * * @return void */ public function __destruct() { if ( ! empty($this->headers)) { // Set headers foreach($this->headers as $key => $val) { if ( ! isset($val)) { @header($key); } else { @header("$key: $val"); } } } if ( ! empty($this->buffer)) { if (is_null(error_get_last())) { // Compression is good! ob_start("ob_gzhandler"); } else { ob_start(); } echo $this->buffer; ob_end_flush(); } } // -------------------------------------------------------------------------- /** * Sets a header for later output * * @param string $key * @param string $val */ public function set_header($key, $val) { $this->headers[$key] = $val; } // -------------------------------------------------------------------------- /** * Adds text to the output buffer * * @param string $string */ public function append_output($string) { $this->buffer .= $string; } // -------------------------------------------------------------------------- /** * Sets the output buffer * * @param string $string */ public function set_output($string) { $this->buffer = $string; } // -------------------------------------------------------------------------- /** * Sends headers and then removes them */ public function flush_headers() { // Set headers foreach ($this->headers as $key => &$val) { if ( ! isset($val)) { @header($key); } else { @header("{$key}: {$val}"); } } // Empty headers $this->headers = []; } } // End of Output.php