【问题标题】:PHP return vs echoPHP返回与回声
【发布时间】:2012-12-28 19:18:21
【问题描述】:

我有一系列功能,最终创建一个表单。它们位于一个类中,例如以下示例:

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>

那么有人可以根据我上面的内容告诉我,为什么即使我已经回显了开始表单标签,我的“某些内容”也会在表单标签之外回显?

即使我没有回显开头的表单标签,“一些内容”仍然出现在开头的表单标签之外。

【问题讨论】:

  • 现在添加调用类及其方法的代码
  • 请发布您用于输出此内容的所有代码。您需要向我们展示如何/在何处调用类中的函数。
  • 你是如何实例化你的类并调用这些函数的?请提供代码。
  • 我已经添加了示例。因为我不能发布超过两个链接,我希望我给的足够了

标签: php string return wordpress-theming echo


【解决方案1】:

echo 立即执行输出,例如

function bar() {
   echo 'bar';
}

bar();
echo 'foo';

给出barfoo 作为输出。但是如果你有

function bar() {
    return 'bar';
}

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

你会得到foobar

【讨论】:

  • 那么我应该怎么做才能确保“某些内容”留在标签内?
【解决方案2】:

Return 将简单地返回变量而不回显它,其中 echo 将在调用时回显它。所以如果你返回一个变量然后回显一些东西。所以在你的函数 create_form() 中,而不是 echo "some content"; 只是做 $this-&gt;_html .= "some content";

【讨论】: