是否可以创建一个既可以显示又可以返回的PHP函数(根据我的调用方式,每次只有一件事)?请看一下这个例子。
例如:
public function test_function(){
echo "Hello"; // echo or anything......
}
如果我调用它test_function()
,它应该显示“你好”;
如果我使用它,$name = test_function();
$name
应该等于“你好”。
注意:我知道传递另一个参数并使用if条件我可以这样做。如果有类似的话,我正在寻找更快的方式。
答案 0 :(得分:2)
没有。你应该回复'你好''并在必要时回复它。
function test_function() {
return 'Hello';
}
$foo = test_function(); // $foo = 'Hello'
echo test_function(); // Prints 'Hello'
答案 1 :(得分:0)
不,你所建议的是不可能的。您已经知道了一些替代方案,但您无法做到这两点。如果您在同一个函数中尝试echo
和return
,那么当您尝试在返回上下文中使用该函数时,您将获得意外结果。
最好的解决方案是在函数中返回一个值,然后回显。
function test_function() {
return 'Hello';
}
echo test_function();
或者
function test_function( $echo = false ) {
$value = 'Hello';
if ( $echo ) {
echo $value;
} else {
return $value;
}
}
答案 2 :(得分:0)
ob_start和ob_get_clean有点可能,如下所示:
function test_function(){
echo "Hello";
}
// Direct output
test_function();
echo PHP_EOL . '<br>-------<br>' . PHP_EOL;
// Catch output into variable
ob_start();
test_function();
$name = ob_get_clean();
echo "Name: " . $name;
输出:
你好 -------
姓名:你好
看到它正在运行here。
我想提一下:建议总是返回值并在需要时打印的答案可能是要走的路。