不带“的PHP返回字符串”;回声;?

不带“的PHP返回字符串”;回声;?,php,Php,我有一个包含很多“return”函数的类: Class Components_superclass { public function build() { $this->add_category('Grille'); } public function add_category($name) { return '<div class="category">'. $name .'</div>

我有一个包含很多“return”函数的类:

Class Components_superclass
{
    public function build()
    {
        $this->add_category('Grille');  
    }

    public function add_category($name)
    {
        return '<div class="category">'. $name .'</div>';
    }
    ...
}
我必须在构建函数中添加“return”吗?有没有办法避免这种情况?因为我有很多函数要调用,我不想写这样的东西:

public function build()
{
     return 
        $this->function_1() .
        $this->function_2() .
        $this->function_3();
}

谢谢

如果希望函数返回值(可以是字符串、整数或其他类型),请使用
return
。如果调用该函数,则返回的值在该位置可用

如果
function_1()
返回字符串'I am function one',您回显函数调用(
echo$this->function_1();
),字符串'I am function one'将被回显

这也是处理函数的正确方法。如果要从函数内部回显,只需在函数中回显即可


退房

是的,
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);
    }
}
类组件\u超类
{
private$buffer=array();
// …
公共功能添加类别($name)
{
$this->buffer[]='.$name';
}
公共功能输出()
{
返回内爆(“”,$this->buffer);
}
}

是,但我想处理字符串“ouputed”。若我在类中回显它们,那个么我就不能把它们放在变量中。正确,这就是你们永远不应该在函数中回显的方式。你可以“收集”flush函数中的所有字符串,并将其返回到你的接口并在那里进行回显?非常好的主意!我没有想到这样做是最有意义的。我是个笨蛋!谢谢。最好只在缓冲区中存储
$name
,而不存储HTML(为什么要使用额外的内存?)。许多人(通常是新手程序员)倾向于认为编程语言具有内置的这些神奇功能。嗯,他们没有。编程就是编程,这意味着你必须完成编程部分。
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);
    }
}