加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

将PHP文件渲染为字符串变量

发布时间:2020-12-13 18:16:25 所属栏目:PHP教程 来源:网络整理
导读:我需要在运行时将 PHP文件渲染或评估为 PHP字符串变量. file_get_contents()会读取内容但不会评估PHP代码. 我知道ob_start()解决方案(如此处所述:Get render HTML from local PHP file)但感觉相当脏.我希望有更直接和干净的东西. 我想要完成的例子: test.p
我需要在运行时将 PHP文件渲染或评估为 PHP字符串变量. file_get_contents()会读取内容但不会评估PHP代码.

我知道ob_start()解决方案(如此处所述:Get render HTML from local PHP file)但感觉相当脏.我希望有更直接和干净的东西.

我想要完成的例子:

test.php的

<?php

for ($i = 0; $< 5; $i++) {
    echo '<p>' . $i . '</p>n';
}

我的代码:

<?php

$string = render_php('test.php');

/*
    Content of $string:
    <p>0</p>
    <p>1</p>
    <p>2</p>
    <p>3</p>
    <p>4</p> 
*/
正如其他人提到的那样,输出缓冲可能是最干净的解决方案,因为它允许您将html模板与逻辑分开.这样你最终会在你的模板文件中找到相当可读的html,而不是意大利面条代码混乱.
function render_php($path)
{
    ob_start();
    include($path);
    $var=ob_get_contents(); 
    ob_end_clean();
    return $var;
}

然后创建模板文件

//test.php
<?php for($i = 0; $i<5; $i++):?>
    <p><?php echo $i;?></p>
<?php endfor ?>

然后调用你的函数:

render_php('test.php');

您甚至可以通过添加第二个参数(数组或对象,即

function render_php($path,array $args){
    ob_start();
    include($path);
    $var=ob_get_contents(); 
    ob_end_clean();
    return $var;
}

现在让我们看看它是如何有用的

//create your template test.php
<?php for($i = $args['start']; $i<$args['end']; $i++):?>
    <p><?php echo $i;?></p>
<?php endfor ?>

现在创建您的参数并将它们传递给render方法

$args = array('start' => 0,'end' => 5);
render_php('test.php',$args);

为什么这很有用

现在你有一个可用的重用函数,无论你需要传递多少个参数,你的逻辑可以放在显示器的单独文件中,使你的代码更具可读性.我们可以使用它来构建仍然易于阅读的大块html.

$article = array(    //imagine we have an article that we have pulled from our database
'title' => 'Some Title','subtitle' => 'Some Sub Title','body' => 'lorem ipsum dolor sit amet,consectetur adipiscing elit. Mauris
    eu nulla quis ligula ornare ultricies. Vivamus malesuada lectus a mi
    auctor pellentesque. Maecenas eu ultricies sapien,ac porta augue. ','image' => 'img/some_image.jpg'
);

echo render_php('article.php',array $article);

并创建一个模板

<!-- article.php -->
<!DOCTYPE html>
<html>
   <head>
       <title><?php echo $article['title']; ?></title>
   </head>
   <body>
         <img src='<?php echo $article['image']; ?>' alt='whatever' >
         <h1><?php echo $article['title']; ?></h1>
         <h2><?php echo $article['subtitle']; ?></h2>
         <p><?php echo $article['body'];?></p>

   </body>
</html>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读