PHP返回没有“echo”的字符串?

时间:2014-02-12 08:12:09

标签: php

我有一个包含很多“返回”功能的类:

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();
}

谢谢!

2 个答案:

答案 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'。

这也是使用函数的正确方法。如果你想从函数内部回显东西,只需在函数中回显。

查看PHP.net's function documentation