153 lines
2.4 KiB
PHP
153 lines
2.4 KiB
PHP
|
<?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
|
||
|
*/
|
||
|
|
||
|
// --------------------------------------------------------------------------
|
||
|
|
||
|
namespace miniMVC;
|
||
|
|
||
|
/**
|
||
|
* Class for displaying output and setting http headers
|
||
|
*
|
||
|
* @package miniMVC
|
||
|
* @subpackage System
|
||
|
*/
|
||
|
class 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
|