代码之家  ›  专栏  ›  技术社区  ›  phenry

在包含()变量之前使用它们

  •  2
  • phenry  · 技术社区  · 16 年前

    我使用一个文件page.php作为几个内容文件的HTML容器;i、 例如,page.php定义了页面的大部分公共结构,内容文件只包含每个页面所特有的文本。我想做的是在每个内容文件中包含一些PHP代码,这些文件定义了页面的元数据,如标题、要使用的横幅图形等。例如,内容文件可能如下所示(简化):

    <?php $page_title="My Title"; ?>
    <h1>Hello world!</h1>
    

    <html>
      <head>
        <title><?php echo $page_title; ?></title>
      </head>
      <body>
        <?php include($_GET['page']); ?>
      </body>
    </html>
    

    2 回复  |  直到 16 年前
        1
  •  2
  •   animuson    16 年前

    大多数人将包含页面的输出存储到另一个变量中。您是否尝试过将包含页面的所有内容放入输出缓冲区,然后存储 ob_get_clean() $page_html ,然后使您的页面如下所示:

    <?php include($_GET['page']); ?>
    <html>
      <head>
        <title><?php echo $page_title; ?></title>
      </head>
      <body>
        <?php echo $page_html; ?>
      </body>
    </html>
    

    编辑:

    <?php
    $page_title="My Title";
    ob_start();
    ?>
    <h1>Hello world!</h1>
    <?php $page_html=ob_get_clean(); ?>
    
        2
  •  1
  •   Eric Petroelje    16 年前

    <?php include($_GET['page']); ?>
    <html>
      <head>
        <title><?php echo $page_title; ?></title>
      </head>
      <body>
         <?php renderPage() ?>
      </body>
    </html>
    

    您要包含的文件如下所示:

    <?php
    $page_title="My Title";
    function renderPage() {
    ?>
    <h1>Hello world!</h1>
    <?php 
    }
    ?>
    

    这也很好,因为您可以将参数传递给renderPage(),这样模板就可以将信息传递给它包含的页面。

    推荐文章