我有一个包含很多“返回”功能的类:
Class Components_superclass
{
public function build()
{
$this->add_category('Grille');
}
public function add_category($name)
{
return '<div class="category">'. $name .'</div>';
}
...
}
我想获取包含“add_category”函数的html代码。但是当我回应这个时,我什么都没有:
$component = new Components_superclass();
echo $component->build();
我必须在构建函数中添加“return”吗?有办法避免这种情况吗?因为我有很多函数要调用,我不想写这样的东西:
public function build()
{
return
$this->function_1() .
$this->function_2() .
$this->function_3();
}
谢谢!
答案 0 :(得分:2)
是的,echo
不起作用,因为没有从构建中返回任何内容 - 没有传递给echo的字符串可以打印。
关于你的第二个问题,你可以在内部缓冲字符串然后立即返回它,如下所示:
Class Components_superclass
{
private $buffer = array();
// …
public function add_category($name)
{
$this->buffer[] = '<div class="category">'. $name .'</div>';
}
public function output()
{
return implode('', $this->buffer);
}
}
答案 1 :(得分:0)
如果希望函数返回值(可以是字符串,整数或其他类型),请使用return
。如果调用该函数,则返回的值将在该位置可用。
如果function_1()
返回字符串'我是函数1'并且您回显函数调用(echo $this->function_1();
),则将回显字符串'我是函数1'。
这也是使用函数的正确方法。如果你想从函数内部回显东西,只需在函数中回显。