我有一系列函数,最后创建一个表单。它们驻留在一个类中,如下例所示:
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>
有人可以告诉我,基于我上面的内容,为什么我将“一些内容”反映在表格标签旁边,即使我已经回应了开头的表格标签?
即使我没有回显开头表格标签,“一些内容”仍会出现在开头表格标签旁边。
答案 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";