今天在看源码的时候,看到一个函数 ob_start()
起初不懂这个函数是什么意识,百度了一下,问了一下技术上的大牛,写一写这个函数的作用。
ob_start()这个函数可以理解成是输出函数,可以把它理解成跟 echo 差不多。只是echo每次输出都在php中有一个维护的内存之中,也就是echo每次输出的东西都是不一样的。
而ob_start()这个函数就是用来抓取你的当前输出。
我百度了一个很重要的概念,其实ob是output buffering的简称。
他的作用如下:
- 防止在浏览器有输出之后再使用setcookie,或者header,session_start函数造成的错误。(我本以为最开始说的代码是这样的作用,但后来朋友说不是的),其实这样的用法少用为好,养成良好的代码习惯。
- 捕捉对一些不可获取的函数的输出,比如phpinfo会输出一大堆的HTML,但是我们无法用一个变量例如$info=phpinfo();来捕捉,这时候ob就管用了。
- 对输出的内容进行处理,例如进行gzip压缩,例如进行简繁转换,例如进行一些字符串替换。
- 生成静态文件,其实就是捕捉整页的输出,然后存成文件,经常在生成HTML,或者整页缓存中使用。