这个问题建立在我问过的上一个问题的基础上,这个问题本质上是相似的。这个问题是一个两部分的问题,关于 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>
你会如何解决这个问题?
我所知道的是,return 返回一个值以供进一步处理,这意味着如果要显示该值,则必须回显返回该值的函数,而 echo 将立即转义处理并回显该值。
我的问题是,我试图将它们一起使用,以创建一个表单。