PHP模拟asp中response类实现方法
发布:smiling 来源: PHP粉丝网 添加日期:2021-06-16 09:57:50 浏览: 评论:0
这篇文章主要介绍了PHP模拟asp中response类的方法,可实现模拟ASP中response类处理客户端响应的功能,具有一定参考借鉴价值,需要的朋友可以参考下。
本文实例讲述了PHP模拟asp中response类的方法,分享给大家供大家参考,具体如下:
习惯了asp或是asp.net开发的人, 他们会经常用到response类,这个类用于处理客户端的响应,可以实现跳转,输出等功能. 在php中没有这个类,但是确实可以通过函数来模拟这个类.
- /*
- * 类用途: 实现类似于asp中的response功能
- */
- final class Response {
- private $headers = array();
- private $output;
- private $level = 0;
- public function addHeader($key, $value) {
- $this->headers[$key] = $value;
- }
- public function removeHeader($key) {
- if (isset($this->headers[$key])) {
- unset($this->headers[$key]);
- }
- }
- public function redirect($url) {
- header('Location: ' . $url);
- exit;
- }
- public function setOutput($output, $level = 0) {
- $this->output = $output;
- $this->level = $level;
- }
- private function compress($data, $level = 0) {
- if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) && (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== FALSE)) {
- $encoding = 'gzip';
- }
- if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) && (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'x-gzip') !== FALSE)) {
- $encoding = 'x-gzip';
- }
- if (!isset($encoding)) {
- return $data;
- }
- if (!extension_loaded('zlib') || ini_get('zlib.output_compression')) {
- return $data;
- }
- if (headers_sent()) {
- return $data;
- }
- if (connection_status()) {
- return $data;
- }
- $this->addHeader('Content-Encoding', $encoding);
- return gzencode($data, (int)$level);
- }
- public function output() {
- if ($this->level) {
- $ouput = $this->compress($this->output, $this->level);
- } else {
- $ouput = $this->output;
- }
- if (!headers_sent()) {
- foreach ($this->headers as $key => $value) {
- header($key . ': ' . $value);
- }
- }
- echo $ouput;
- }
- }
希望本文所述对大家的php程序设计有所帮助。
Tags: PHP模拟asp response
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)