微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

你怎么能在PHP中创建一个“content_for”等价物?

我一直在使用PHP的小页面,这个页面不需要它背后的完整框架的强大功能.我之前在Ruby-on-Rails中工作中缺少的一件事就是能够使用“content_for”有效地将内容传递到页面上.

我想知道的是,你如何创建一个可以在PHP中实现同样效果页面生命周期?

所以,这是一个简单的例子:

假设您有一个模板,用于定义索引页,只需要在所有页面上使用的重复标题菜单.所以你的index.PHP文件看起来基本上是这样的:

...header stuff...
<body>
<?PHP include $file.'.PHP'; ?>
</body>
...footer stuff...

编辑:感谢有关URL安全性的提示,但我们假设我正在安全地收到用户请求:)

现在,让我们在标题中说出你想要的:

<head>
<title><?PHP echo $page_title; ?></title>
</head>

能够在包含的文件中指定标题会很好,所以在网址http://example.com/index.PHP?p=test你正在加载test.PHP,该文件如下所示:

<?PHP $page_title = 'Test Page'; ?>
... rest of content ...

现在,显然这不起作用,因为在设置变量之前加载了包含页面(index.PHP).

在Rails中,您可以使用content_for函数在“页面上”传递内容.

我的问题是:你们都能想到在PHP中实现这种“content_for”功能的最简单,最简洁的方法是什么?

理想情况下,我想要的建议不涉及一些大框架,而是一些相对较轻的样板代码,可用于许多不同的应用程序.

解决方法:

>永远不要包括$_GET [‘p’].这会在您的站点中打开一个巨大的安全漏洞,因为包含接受文件名和URL,因此任何人都可以读取您站点上的任何文件并执行服务器上的任何代码.您可能希望首先检查并清理该值.
>如果您需要简单的东西,可以将页眉和页脚放在单独的文件中,执行test.PHP,它将设置变量,使用output buffering捕获其输出,然后包含标题,输出中间部分并包含页脚.例:

<?PHP ob_start(); ?>
<body>
<?PHP include $filename.'.PHP'; ?>
</body>
<?PHP $content = ob_get_clean(); 
 include 'header.PHP';
 echo $content;
 include 'footer.PHP';
 ?>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐