0

この方法を使用する必要があると思いますか:

function PrintHtml() {
  echo "Hello World!";
}

Printhtml();

これの代わりに:

function GetHtml() {
  $html = "Hello ";
  $html .= "World!";

  return $html;
}

echo GetHtml();

メモリ使用量を減らすには?システム全体を Print / Get 関数で実行する予定ですが、どのルートに進みますか?

4

3 に答える 3

1

これは、メモリフットプリント/パフォーマンスに関するものであってはなりません。

Echo関数内で何かを実行することは、システムを使用している自分自身や他の人に、関数を実行して返されるデータで何かを行う代わりに、関数を直接使用するように強制しているため、かなりくだらない動作です。

echo最初のケースでは、これはバッファする必要があることを意味し、長い目で見れば適切にデータを返すのではなく、関数内から ing を実行するとさらに問題が発生します (つまり、テストなど)。2番目のオプションに進みます。ただし、関数内で HTML を「構築」したくないことがよくあるため、関数で何を調理しているのか正確にはわかりません。それがテンプレートの目的です。

また、関数が大文字で始まらないことは一般的な慣習であることにも注意してください。

于 2013-09-14T14:07:21.700 に答える
0

Jeffman がすでに言ったように、2 番目の方法を使用する方がよいと思います。2 番目の方法では、いくつかのタグや必要なものを置き換えるなど、準備するオプションもあります。出力をより細かく制御できます。

于 2013-09-14T14:04:19.860 に答える
0

テンプレートファイルをロードするクラスを作成します。私の例では、index.php という名前のファイルを作成しました。このファイルは、"templates" > "myTemplate" フォルダーに保存されます。次のクラスを使用できます。

<?php
    // defines
    define('DS', DIRECTORY_SEPARATOR);
    define('_root', dirname(__FILE__));

    // template class
    class template
    {
        var templateName;
        var templateDir;

        function __construct($template)
        {
            $this->templateName = $template;
            $this->templateDir = _root.DS.'templates'.DS.$this->templateName;
        }

        function loadTemplate()
        {
            // load template if it exists
            if(is_dir($this->templateDir) && file_exists())
            {
                // we save the output in the buffer, so that we can handle the output
                ob_start();

                include_once($file);

                // save output
                $output = ob_get_contents();

                // clear buffer
                ob_end_clean();

                // return output
                return $output;
            }
            else
            {
                // the output when the template does not exists or the index.php is missing
                return 'The template "'.$this->templateName.'" does not exists or the "index.php" is missing.';
            }
        }
    }
?>

テンプレートをロードするだけの基本クラスです。これで、このクラスを次のように呼び出すことができます。

<?php
    // example for using the class
    include_once('class.template.php');
    $template = new template('myTemplate');
    $html = $template->loadTemplate();

    echo $html;
?>

index.php で、次のように html を記述できるようになりました。

<!DOCTYPE html>
<html lang="en-GB">
<head>
    <title>My Template</title>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
    <p>
        My Content
    </p>
</body>
</html>

これが少しお役に立てば幸いです。

于 2013-09-14T20:11:02.257 に答える