0

最終的にフォームを作成すると思われる一連の関数があります。次の例のようなクラスに存在します。

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 の 86 行目で見ることができます 。

あなたがこれの実写デモを見たいなら、あなたは私を望まないでしょう. 一日の終わりに Web ページのフォームを調べると、フォーム開始タグの上に、フォーム タグ内にある必要がある 2 つの非表示フィールドが表示されます。

これにより、次のようなフォームが作成されると考えられます。

<form>
    element
    some conent
</form>

しかし、私が得たものは次のとおりです。

some content
<form>
    element
</form>

上記の内容に基づいて、開始フォームタグをエコーし​​たにもかかわらず、「一部のコンテンツ」がフォームタグの外側にエコーされる理由を教えてもらえますか?

開始フォームタグをエコーし​​なくても、「一部のコンテンツ」が開始フォームタグの外側に表示されます。

4

2 に答える 2

3

echo はすぐに出力を実行します。

function bar() {
   echo 'bar';
}

bar();
echo 'foo';

出力として与えbarfooます。しかし、もしあなたが持っていたら

function bar() {
    return 'bar';
}

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

あなたが得るでしょうfoobar

于 2013-01-14T19:21:23.850 に答える
1

Return は単に変数をエコーせずに返しますが、echo は呼び出されたときにそれをエコーアウトします。したがって、変数を返してから何かをエコーする場合。したがって、関数 create_form() では、echo "some content";単に行うのではなく$this->_html .= "some content";

于 2013-01-14T19:26:14.353 に答える