将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> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |