我可以将 include_once 文件分配给带有 PHP 的 $var 吗?
Can I assign an include_once file to a $var with PHP?
我纯粹出于学习目的尝试推出自己的 MVC,但是当我尝试加载视图文件时遇到了障碍。这是我的问题:
前端控制器抓取合适的页面控制器,页面控制器include_once()
抓取合适的视图。该视图是一个包含 HTML 和 PHP 的文件。当我 return 来自控制器的包含文件时,包含的文件内容出现在预期的 PAGE 布局顺序之外。 (示例:我想显示 HEADER CONTENT FOOTER,但是当我包含视图的内容时,我的控制器会吐出 CONTENT, HEADER, 1, FOOTER)。
在我的前端控制器中,我试图将我包含的文件内容设置为一个变量,然后我在 PAGE 模板中的 HEAD 和 FOOTER 之间回显。但这并不像预期的那样工作。我可以将我的视图文件内容包装在:return "code" 但我不想因为担心我的视图代码中可能破坏脚本的杂散 quotes/double 引号而更加头疼。我试过 file_get_contents()
,但这只会吐出一个字符串(尽管在我的模板中 place/sequence 的右边)并且在我的视图文件中没有正确地显示 PHP(即根本没有)。
我的问题是:有没有一种方法可以在变量中使用 include_once()
return 我的视图文件到我的前端控制器?我似乎找不到合适的答案。如果有帮助,我很乐意添加我的代码。
您可以从 include()
中分配 return 值。此函数的一个鲜为人知的特性是您可以拥有这样的文件:
<?php
// config.php
return array('database_host' => 'localhost');
你可以这样阅读:
<?php
$config = include('config.php');
但是,您想要这样做:
<!-- text.html -->
<h1>Heading</h1>
<p>Hello</p>
并读入:
$html = include('text.html);
您可以尝试这样做,但是一旦 include()
扫描文件,输出就会被发送到网络服务器。这就是 PHP 的工作原理。由于没有明确的 return
值,而且 $html
变量返回为空。
因此,我们使用输出缓冲函数来修改 PHP 的行为:我们开始缓冲,然后获取并清除它。然后它不会发送到 Apache,当然除非您选择关闭输出缓冲和 echo
您收集的内容,在这种情况下它会返回到正常输出缓冲区并实际发送。
我纯粹出于学习目的尝试推出自己的 MVC,但是当我尝试加载视图文件时遇到了障碍。这是我的问题:
前端控制器抓取合适的页面控制器,页面控制器include_once()
抓取合适的视图。该视图是一个包含 HTML 和 PHP 的文件。当我 return 来自控制器的包含文件时,包含的文件内容出现在预期的 PAGE 布局顺序之外。 (示例:我想显示 HEADER CONTENT FOOTER,但是当我包含视图的内容时,我的控制器会吐出 CONTENT, HEADER, 1, FOOTER)。
在我的前端控制器中,我试图将我包含的文件内容设置为一个变量,然后我在 PAGE 模板中的 HEAD 和 FOOTER 之间回显。但这并不像预期的那样工作。我可以将我的视图文件内容包装在:return "code" 但我不想因为担心我的视图代码中可能破坏脚本的杂散 quotes/double 引号而更加头疼。我试过 file_get_contents()
,但这只会吐出一个字符串(尽管在我的模板中 place/sequence 的右边)并且在我的视图文件中没有正确地显示 PHP(即根本没有)。
我的问题是:有没有一种方法可以在变量中使用 include_once()
return 我的视图文件到我的前端控制器?我似乎找不到合适的答案。如果有帮助,我很乐意添加我的代码。
您可以从 include()
中分配 return 值。此函数的一个鲜为人知的特性是您可以拥有这样的文件:
<?php
// config.php
return array('database_host' => 'localhost');
你可以这样阅读:
<?php
$config = include('config.php');
但是,您想要这样做:
<!-- text.html -->
<h1>Heading</h1>
<p>Hello</p>
并读入:
$html = include('text.html);
您可以尝试这样做,但是一旦 include()
扫描文件,输出就会被发送到网络服务器。这就是 PHP 的工作原理。由于没有明确的 return
值,而且 $html
变量返回为空。
因此,我们使用输出缓冲函数来修改 PHP 的行为:我们开始缓冲,然后获取并清除它。然后它不会发送到 Apache,当然除非您选择关闭输出缓冲和 echo
您收集的内容,在这种情况下它会返回到正常输出缓冲区并实际发送。