输出类

输出类是个核心类,它的功能只有一个:发送 Web 页面内容到请求的浏览器。如果你开启缓存,它也负责 缓存 你的 Web 页面。

注解

这个类由系统自动加载,你无需手工加载。

在一般情况下,你可能根本就不会注意到输出类,因为它无需你的干涉,对你来说完全是透明的。例如,当你使用 加载器加载一个视图文件时,它会自动传入到输出类,并在系统执行的最后由CodeIgniter 自动调用。尽管如此,在你需要时,你还是可以对输出进行手工处理。

类参考

  • _class _CI_Output
    • $parse_exec_vars = TRUE;
    • 启用或禁用解析伪变量({elapsed_time} 和 {memory_usage})。

CodeIgniter 默认会在输出类中解析这些变量。要禁用它,可以在你的控制器中设置这个属性为 FALSE 。

  1. $this->output->parse_exec_vars = FALSE;
  • setoutput($output_)

参数:

  1. - **$output** (_string_) -- String to set the output to返回:

CI_Output instance (method chaining)返回类型:CI_Output

允许你手工设置最终的输出字符串。使用示例:

  1. $this->output->set_output($data);

重要

如果你手工设置输出,这必须放在方法的最后一步。例如,如果你正在某个控制器的方法中构造页面,将 set_output这句代码放在方法的最后。

  • setcontent_type($mimetype[, $charset = NULL])

参数:

  1. - **$mime_type** (_string_) -- MIME Type idenitifer string
  2. - **$charset** (_string_) -- Character set返回:

CI_Output instance (method chaining)返回类型:CI_Output

允许你设置你的页面的 MIME 类型,可以很方便的提供 JSON 数据、JPEG、XML 等等格式。

  1. $this->output
  2. ->set_content_type('application/json')
  3. ->set_output(json_encode(array('foo' => 'bar')));
  4.  
  5. $this->output
  6. ->set_content_type('jpeg') // You could also use ".jpeg" which will have the full stop removed before looking in config/mimes.php
  7. ->set_output(file_get_contents('files/something.jpg'));

重要

确保你传入到这个方法的 MIME 类型在 application/config/mimes.php文件中能找到,要不然方法不起任何作用。

你也可以通过第二个参数设置文档的字符集。

$this->output->set_content_type('css', 'utf-8');
  • get_content_type()

返回:Content-Type string返回类型:string

获取当前正在使用的 HTTP 头 Content-Type ,不包含字符集部分。

  1. $mime = $this->output->get_content_type();

注解

如果 Content-Type 没有设置,默认返回 'text/html' 。

  • getheader($header_)

参数:

  1. - **$header** (_string_) -- HTTP header name返回:

HTTP response header or NULL if not found返回类型:mixed

返回请求的 HTTP 头,如果 HTTP 头还没设置,返回 NULL 。例如:

  1. $this->output->set_content_type('text/plain', 'UTF-8');
  2. echo $this->output->get_header('content-type');
  3. // Outputs: text/plain; charset=utf-8

注解

HTTP 头名称是不区分大小写的。

注解

返回结果中也包括通过 PHP 原生的 header() 函数发送的原始 HTTP 头。

  • get_output()

返回:Output string返回类型:string

允许你手工获取存储在输出类中的待发送的内容。使用示例:

  1. $string = $this->output->get_output();

注意,只有通过 CodeIgniter 输出类的某个方法设置过的数据,例如$this->load->view() 方法,才可以使用该方法获取到。

  • appendoutput($output_)

参数:

  1. - **$output** (_string_) -- Additional output data to append返回:

CI_Output instance (method chaining)返回类型:CI_Output

向输出字符串附加数据。

  1. $this->output->append_output($data);
  • setheader($header[, $replace = TRUE_])

参数:

  1. - **$header** (_string_) -- HTTP response header
  2. - **$replace** (_bool_) -- Whether to replace the old header value, if it is already set返回:

CI_Output instance (method chaining)返回类型:CI_Output

允许你手工设置服务器的 HTTP 头,输出类将在最终显示页面时发送它。例如:

  1. $this->output->set_header('HTTP/1.0 200 OK');
  2. $this->output->set_header('HTTP/1.1 200 OK');
  3. $this->output->set_header('Last-Modified: '.gmdate('D, d M Y H:i:s', $last_update).' GMT');
  4. $this->output->set_header('Cache-Control: no-store, no-cache, must-revalidate');
  5. $this->output->set_header('Cache-Control: post-check=0, pre-check=0');
  6. $this->output->set_header('Pragma: no-cache');
  • setstatus_header([$code = 200[, $text = ''_]])

参数:

  1. - **$code** (_int_) -- HTTP status code
  2. - **$text** (_string_) -- Optional message返回:

CI_Output instance (method chaining)返回类型:CI_Output

允许你手工设置服务器的 HTTP 状态码。例如:

  1. $this->output->set_status_header(401);
  2. // Sets the header as: Unauthorized

阅读这里 得到一份完整的 HTTP 状态码列表。

注解

这个方法是 通用方法 中的set_status_header() 的别名。

  • enableprofiler([$val = TRUE_])

参数:

  1. - **$val** (_bool_) -- Whether to enable or disable the Profiler返回:

CI_Output instance (method chaining)返回类型:CI_Output

允许你启用或禁用 程序分析器 ,它可以在你的页面底部显示基准测试的结果或其他一些数据帮助你调试和优化程序。

要启用分析器,将下面这行代码放到你的 控制器方法的任何位置:

  1. $this->output->enable_profiler(TRUE);

当启用它时,将生成一份报告并插入到你的页面的最底部。

要禁用分析器,你可以这样:

  1. $this->output->enable_profiler(FALSE);
  • setprofiler_sections($sections_)

参数:

  1. - **$sections** (_array_) -- Profiler sections返回:

CI_Output instance (method chaining)返回类型:CI_Output

当程序分析器启用时,该方法允许你启用或禁用程序分析器的特定字段。请参考 程序分析器 文档获取详细信息。

  • cache($time)

参数:

  1. - **$time** (_int_) -- Cache expiration time in minutes返回:

CI_Output instance (method chaining)返回类型:CI_Output

将当前页面缓存一段时间。

更多信息,请阅读 文档缓存

  • display([$output = ''_])

参数:

  1. - **$output** (_string_) -- Output data override返回:

void返回类型:void

发送最终输出结果以及服务器的 HTTP 头到浏览器,同时它也会停止基准测试的计时器。

注解

这个方法会在脚本执行的最后自动被调用,你无需手工调用它。除非你在你的代码中使用了 exit() 或 die() 结束了脚本执行。

例如:

  1. $response = array('status' => 'OK');
  2.  
  3. $this->output
  4. ->set_status_header(200)
  5. ->set_content_type('application/json', 'utf-8')
  6. ->set_output(json_encode($response, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES))
  7. ->_display();
  8. exit;

注解

手工调用该方法而不结束脚本的执行,会导致重复输出结果。