Response.php 1.26 KB
Newer Older
Qiang Xue committed
1 2 3
<?php
/**
 * @link http://www.yiiframework.com/
Qiang Xue committed
4
 * @copyright Copyright (c) 2008 Yii Software LLC
Qiang Xue committed
5 6 7 8 9 10 11 12 13
 * @license http://www.yiiframework.com/license/
 */

namespace yii\base;

/**
 * @author Qiang Xue <qiang.xue@gmail.com>
 * @since 2.0
 */
14
class Response extends Component
Qiang Xue committed
15
{
Qiang Xue committed
16 17 18
	const EVENT_BEGIN_RESPONSE = 'beginResponse';
	const EVENT_END_RESPONSE = 'endResponse';

Alexander Makarov committed
19 20 21
	/**
	 * Starts output buffering
	 */
Qiang Xue committed
22 23 24 25 26 27
	public function beginOutput()
	{
		ob_start();
		ob_implicit_flush(false);
	}

Alexander Makarov committed
28 29 30 31
	/**
	 * Returns contents of the output buffer and discards it
	 * @return string output buffer contents
	 */
Qiang Xue committed
32 33 34 35 36
	public function endOutput()
	{
		return ob_get_clean();
	}

Alexander Makarov committed
37 38 39 40
	/**
	 * Returns contents of the output buffer
	 * @return string output buffer contents
	 */
Qiang Xue committed
41 42 43 44 45
	public function getOutput()
	{
		return ob_get_contents();
	}

Alexander Makarov committed
46 47 48 49
	/**
	 * Discards the output buffer
	 * @param boolean $all if true recursively discards all output buffers used
	 */
50
	public function cleanOutput($all = true)
Qiang Xue committed
51 52 53 54 55 56 57 58 59 60 61
	{
		if ($all) {
			for ($level = ob_get_level(); $level > 0; --$level) {
				if (!@ob_end_clean()) {
					ob_clean();
				}
			}
		} else {
			ob_end_clean();
		}
	}
Qiang Xue committed
62 63 64 65 66 67 68 69 70 71

	public function begin()
	{
		$this->trigger(self::EVENT_BEGIN_RESPONSE);
	}

	public function end()
	{
		$this->trigger(self::EVENT_END_RESPONSE);
	}
Qiang Xue committed
72
}