PHP返回vs echo

时间:2013-01-14 19:18:34

标签: php string return wordpress-theming echo

我有一系列函数,最后创建一个表单。它们驻留在一个类中,如下例所示:

class ExampleForm{
    protected $_html = '';

    protected $_element;

    public function __construct($element){
        $this->_element = $element;   

    protected function _open_form(){
       echo $this->_html .= '<form>';
    }

    public function create_form(){
       $this->_open_form()
       $this->_html .= $this->_element;
       echo "some content";
       $this->_close_form()
    }

    protected function _close_form(){
        echo $this->_html .= '</form>'
    }

    public function __toString(){
        return $this->_html;
}

实例化为:

$element = 'some element';
new ExampleForm($element);

可以在Github on line 86上看到更全面的示例 这个内容得到了回应,它如何反映出形式。

如果您想在一天结束时查看此Then you'll deff wan't me.的实时动作演示,如果您检查网页上的表单,您会在表单开头标记上方看到需要的两个隐藏字段在表单标记内

现在人们会认为这会创建一个表单,如:

<form>
    element
    some conent
</form>

然而,我得到的是:

some content
<form>
    element
</form>

有人可以告诉我,基于我上面的内容,为什么我将“一些内容”反映在表格标签旁边,即使我已经回应了开头的表格标签?

即使我没有回显开头表格标签,“一些内容”仍会出现在开头表格标签旁边。

2 个答案:

答案 0 :(得分:3)

echo立即执行输出,例如

function bar() {
   echo 'bar';
}

bar();
echo 'foo';

barfoo作为输出。但如果你有

function bar() {
    return 'bar';
}

$baz = bar();
echo 'foo';
echo $baz;

你会得到foobar

答案 1 :(得分:1)

返回将简单地返回变量而不回显变量,其中echo将在调用时将其回显。所以如果你返回一个变量然后回显一些东西。因此,在您的函数create_form()中,只需执行echo "some content";

而不是$this->_html .= "some content";