5.1. include(), require()

未匹配的标注

持之以恒,方得始终!

在讲函数之前,我们先说下这两个重要的函数,它们的作用是载入一个文件内容到调用处。依托于此,代码可以很好的分门别类的放入不同目录下,不同文件中。即实现了代码调用的模块化,组件化。

一般载入的文件类型是 xx.php, xx.html的,你当然也可以载入其它类型的文件。主要是把文件的内容放入调用处,其实跟文件类型关系不大。

include(),require() 的区别

调用文件失败后,require()直接报一个致命错误。而include()是一个警告

include(), require()

include(), require()

include_once(), require_once()

被载入的文件,仅载入一次。

// ./index.php
var_dump(111);

// ./1.php
require_once("./index.php");

require_once("./index.php");

// 执行 php 1.php的结果
int(111)

可以看到,调用了两次 require_once(),载入文件index.php的内容,里面是打印111,但实际是仅执行了一次打印。

多重载入例子

1.php

echo "111111111\n";

2.php

echo "22222222222\n";
require("./1.php");

// 执行php 2.php , 输出结果
22222222222
111111111

可以看一下执行顺序
再看再次嵌入
3.php

echo "333333333\n";
require("2.php");

// 执行php 3.php
333333333
22222222222
111111111

html文件中包含php脚本的载入

我们在 html 中写入 php 代码,如果直接用浏览器去访问这个html文件,php 代码是不会解析。但是如果我们将html文件,载入php文件中,再用浏览器访问,则会解析。
当然了,我们可以设置 webserver 的配置,php的配置,让其可以执行。

还或者,我们用 php xxx.html 这样,也会执行。
page.php

$name = 'this page view';
include("./page.html");

page.html

<h1><?php echo $name;?></h1>

浏览器访问127.0.0.1:8080/page.php, 结果为:
include(), require()

这种形式,我们已经看到 mvc 分层的影子了。

html页面的头尾分离

一般网站中,很多页面的header,footer部分,都是一样的代码,如果我们每个页面都有这个代码,假如要稍微改动一下,就需要调整很多的页面文件。

这里我们就可以借助于 include(),require() 来做一个分离了,我们把header共用部分的代码单独放在一个文件中 header.php

<h1>header</h1>

把footer的代码放到footer.php中

<h1>footer</h1>

主内容main.php

<?php
require("./header.php");
?>
<p>this is content.</p>
<?php
require("./footer.php");
?>

这样的好处是,我们改动header.php中的文件,对其它所有引用它的地方,都生效。

还有一点,我们可以把require()引用的文件,放到项目之外,这样可以加强安全性。

如果我们知道引用的文件,都是纯文本,或者都是html,我们也可以用 readfile() 读取文件内容显示,不会解析执行里面的代码。这也是个加强安全的办法。

auto_prepend_file, auto_append_file

在 php.ini 配置这两个选项,也可以在每个页面的首部,尾部,载入内容。
它们类似于 include() 的功能,文件不存在,报一个 warning。

我们来设置一下
include(), require()
在项目下创建一个 main.php 文件, 写入

<h1>content...</h1>

然后重启web服务器,访问这个页面
include(), require()

可以看到,php.ini 中设置的 header.php 和 footer.php 文件内容已经自动载入 main.php 文件中了。

但是这样设置了,所有文件都会自动被载入内容,我们无法可选择性的载入。

假如我们是 apache web server,我们可以用 .htaccess 文件来改变一下配置方式。
.htaccess 比 php.ini 更灵活,首先它可以替代一些 php.ini 中的配置,然后可以限定到某目录里边。并且它的修改不需要重启web server 服务器。限定到目录下,只需要在其目录下,创建一个 .htaccess文件,写入配置即可。

当然它也有缺点的,它限定目录下的文件执行,都会要处理这个文件,所以性能会降低的。

// .htaccess
php_value auto_prepend_file "C:/Users/xqw/Desktop/code/header.php"
php_value auto_append_file "C:/Users/xqw/Desktop/code/footer.php"

这种方式其实不怎么用的,我们了解即可。

如有任何侵权行为,请通知我删除,谢谢大家!
个人邮箱:865460609@qq.com

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
Junwind
讨论数量: 0
发起讨论 只看当前版本


暂无话题~