return,echo和使用php创建表单

时间:2013-02-14 19:32:54

标签: php html forms return echo

这个问题建立在previous question I asked which is similar in nature的基础上这个问题是一个关于html输出到屏幕的方式的两个问题,基于下面的课程。

根据该问题的答案,我创建了以下内容:

class Form{

    protected $_html = '';

    public function __construct(){
        $this->init();
    }

    public function init(){

    }

    public function open_form(){
        $this->_html .= '<form>';
    }

    public function elements(){
        $this->_html .= 'element';
    }

    public function close_form(){
        $this->_html .= '</form>';
    }

    public function create_form(){
        $this->open_form();
        $this->elements();
        $this->close_form();
    }

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

这个课程的问题是,如果我这样做:

$form = new Form
echo $form->create_form();

然后没有打印出来。如果我更改create_form以执行以下操作:

    public function create_form(){
        $this->open_form();
        $this->elements();
        $this->close_form();

        echo $this->_html;    
    }

然后它有效,我看到了:

<form>elements</form>

这是为什么?我该如何解决?

这个问题的第二部分是我有一个功能,并且我不能将隐藏隐藏字段的功能更改为表单。问题是如果我这样做:

    public function create_form(){
        $this->open_form();
        $this->elements();
        function_echoes_hidden_fields();
        $this->close_form();

        echo $this->_html;    
    }

    // Sample function to echo hidden fields.
    public function function_echoes_hidden_fields(){
        echo "hidden fields";
    }

我现在看到:

"hidden fields"
<form>elements</form>

您如何解决此问题?

我所知道的是返回,返回一个值以供进一步处理,这意味着如果要显示该值,则必须回显返回值的函数,而echo将转义处理imediatly并回显该值。 / p>

我的问题是,我正在尝试一起使用它们来创建表单。

2 个答案:

答案 0 :(得分:1)

调用create_form然后回显该类。

$form = new Form
$form->create_form();
echo $form;

或将return $this->_html;添加到create_form(),您现有的代码就可以使用。

答案 1 :(得分:1)

create_form更改为

public function create_form(){
        $this->open_form();
        $this->elements();
        $this->close_form();
        return $this->_html;
    }

将function_echoes_hidden_​​fields更改为

public function function_echoes_hidden_fields(){
        $this->_html .= 'hidden fields';
    }

<强>更新 或创建一个新类

class newFrom extends Form{
public function get_form()
{
        return $this->_html;
}
public function create_form(){
    $this->open_form();
    $this->elements();
    $this->function_echoes_hidden_fields()
    $this->close_form();

    return $this->_html;
}
public function function_echoes_hidden_fields(){
    $this->_html .= 'hidden fields';
}
};
$form = new newFrom;
$form->create_form();
echo $form->get_form();