我基本上有两个相关的查询:
考虑类中的以下PHP函数,例如xyz.php
arrayRight
在案例1中,有没有办法通过调用另一个函数中的函数来获取回显值,但是而不使用return语句?
在case2中,有没有办法停止echo语句打印的值(我只想返回值)?
答案 0 :(得分:1)
您需要使用输出缓冲:
ob_start();
$foo->sendResponse();
$response = ob_get_clean();
这就是为什么它首先不是一个实用的设计。如果你让这个函数总是返回值,那么根据自己的喜好做这两件事是微不足道的:
$response = $foo->sendResponse();
echo $foo->sendResponse();
<?=$foo->sendResponse()?>
(最后一个选项是为了说明目的而共享的,并不打算对短开标签展开火焰战。)
答案 1 :(得分:1)
回答你的问题在于output buffer(ob)
,希望这会帮助你理解。这里我们使用三个函数ob_start()
将启动输出缓冲区,ob_end_clean()
将清除缓冲区的输出,ob_get_contents
将输出为字符串,直到现在才回显。 This可以帮助您更好地理解ob_get_contents
<?php
class x
{
function sendResponse()
{
$car = "Lambo1";
echo $car;
}
function sendResponseTwo()
{
$car = "Lambo2";
echo $car;
return $car;
}
function getResponse()
{
//case 1:
$carName = $this->sendResponse();
//ABOVE WON'T WORK AS THE FUNCTION RETURNS NOTHING.
//case 2:
$carName = $this->sendResponseTwo();
//THIS WILL PRINT THE NAME OF CAR
}
}
ob_start();//this will start output buffer
$obj= new x();
$obj->getResponse();
$string=ob_get_contents();//this will gather complete content of ob and store that in $string
ob_end_clean();//this will clean the output buffer
echo $string;
?>