在讲函数之前,我们先说下这两个重要的函数,它们的作用是**载入一个文件内容到调用处**。依托于此,代码可以很好的分门别类的放入不同目录下,不同文件中。即实现了代码调用的模块化,组件化。 一般载入的文件类型是 `xx.php, xx.html`的,你当然也可以载入其它类型的文件。主要是把文件的内容放入调用处,其实跟文件类型关系不大。 ## include(),require() 的区别 调用文件失败后,require()直接报一个致命错误。而include()是一个警告 ![include(), require()](https://cdn.learnku.com/uploads/images/202303/18/45384/cbqpsIfcYM.png!large) ![include(), require()](https://cdn.learnku.com/uploads/images/202303/18/45384/PLwRVKojrz.png!large) ## include_once(), require_once() 被载入的文件,仅载入一次。 ```php // ./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 ```php echo "111111111\n"; ``` 2.php ```php echo "22222222222\n"; require("./1.php"); // 执行php 2.php , 输出结果 22222222222 111111111 ``` 可以看一下执行顺序 再看再次嵌入 3.php ```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 ```php $name = 'this page view'; include("./page.html"); ``` page.html ```php
``` 浏览器访问http://127.0.0.1:8080/page.php, 结果为: ![include(), require()](https://cdn.learnku.com/uploads/images/202303/18/45384/nTGEUCrfqw.png!large) 这种形式,我们已经看到 `mvc` 分层的影子了。 ## html页面的头尾分离 一般网站中,很多页面的header,footer部分,都是一样的代码,如果我们每个页面都有这个代码,假如要稍微改动一下,就需要调整很多的页面文件。 这里我们就可以借助于 include(),require() 来做一个分离了,我们把header共用部分的代码单独放在一个文件中 header.php ```phpthis is content.
``` 这样的好处是,我们改动header.php中的文件,对其它所有引用它的地方,都生效。 > 还有一点,我们可以把require()引用的文件,放到项目之外,这样可以加强安全性。 > 如果我们知道引用的文件,都是纯文本,或者都是html,我们也可以用 readfile() 读取文件内容显示,不会解析执行里面的代码。这也是个加强安全的办法。 ## auto_prepend_file, auto_append_file 在 php.ini 配置这两个选项,也可以在每个页面的首部,尾部,载入内容。 它们类似于 include() 的功能,文件不存在,报一个 warning。 我们来设置一下 ![include(), require()](https://cdn.learnku.com/uploads/images/202303/18/45384/tJbIyINfD8.png!large) 在项目下创建一个 main.php 文件, 写入 ```php