<?php declare(strict_types=1); ini_set('display_errors', 'On'); error_reporting(-1); echo '(1)孩儿立志出乡关' . PHP_EOL; ob_start(); // 打开输出控制缓冲 echo '(2)学不成名誓不还' . PHP_EOL; echo '(3)埋骨何须桑梓地' . PHP_EOL; $contents = ob_get_clean(); // 得到当前缓冲区的内容并删除当前输出缓冲区 echo '(4)人生无处不青山' . PHP_EOL; echo $contents; // (1)孩儿立志出乡关 // (4)人生无处不青山 // (2)学不成名誓不还 // (3)埋骨何须桑梓地 //========== 总结 ==========// // 1、使用ob_start()打开输出控制缓冲后,后续所有输出(不限于echo,还有print_r()、var_dump()、phpinfo()等也属于输出)都会被暂存到缓冲区, // 缓冲区可以被清空,而一旦清空缓冲区这些暂存到缓冲区的内容就不会显示在页面上。 // 2、输出控制缓冲一个经典的使用场景就是在不干扰页面的前提下使用var_dump()收集一些数据用于分析,具体实现可看下面的代码。
<?php declare(strict_types=1); ini_set('display_errors', 'On'); error_reporting(-1); echo '(1)孩儿立志出乡关' . PHP_EOL; echo '(2)学不成名誓不还' . PHP_EOL; $profile = ['name' => '张三', 'gender' => '男', 'age' => 18]; ob_start(); // 打开输出控制缓冲 var_dump($profile); // var_dump()的输出被暂存到缓冲区,所以这里不会输出任何内容 $dump = ob_get_clean(); // 从缓冲区获取var_dump()的内容,然后清空缓冲区 file_put_contents(__DIR__ . '/dump.txt', $dump); // 将var_dump()的内容保存到文件(或数据库) echo '(3)埋骨何须桑梓地' . PHP_EOL; echo '(4)人生无处不青山' . PHP_EOL; // (1)孩儿立志出乡关 // (2)学不成名誓不还 // (3)埋骨何须桑梓地 // (4)人生无处不青山 //========== [dump.txt]文件的内容 ==========// // array(3) { // ["name"]=> // string(6) "张三" // ["gender"]=> // string(3) "男" // ["age"]=> // int(18) // }
Copyright © 2024 码农人生. All Rights Reserved