风之旅人 Android Dev Engineer

4.PHP文件包含

2019-10-10
PHP

文件包含

文件包含:在一个PHP脚本中,去将另外一个文件(PHP)包含进来,去合作完成一件事情。

文件包含的作用

  • 文件包含的意义:
  1. 要么使用被包含文件中的内容,实现代码的共享(重用):向上包含(索要) 向上包含:在当前脚本要用某个代码之前包含别的文件

  2. 要么自己有东西可以给别的文件使用,实现代码的共享(重用):向下包含(给予) 向下包含:在自己有某个东西的时候,需要别的脚本来显示(自己代码写完之后包含其他文件)

最大的作用:分工协作,每个脚本做的事情不一样,因此可以使用协作方式,让多个脚本共同完成一件事情。

文件包含四种形式

在PHP中文件的包含有四种形式两种大形式
Include包含文件
Include_once系统会自动判断文件包含过程中是否已经包含过一个文件最多被包含一次
Require与include相同
Require_once以include_once相同

包含基本语法
include 文件名字;
include(文件名字);	//文件名字:路径问题

向上包含(索要):是先包含文件,后使用文件中的内容(向上包含) up 向下包含(给予):先准备内容,然后包含另外的文件,在另外的文件中,使用当前的内容 down


简单例子:test.php中引入temp.php , 两文件位于同一文件夹下:
temp.php

echo '<a href="/index.asp">首页</a> -
<a href="/html/index.asp">HTML 教程</a> -
<a href="/css/index.asp">CSS 教程</a> -
<a href="/js/index.asp">JavaScript 教程</a> -
<a href="/php/index.asp">PHP 教程</a>';

test.php

echo 'dddddd<br>';
include 'temp.php';

效果:

dddddd
首页 - HTML 教程 - CSS 教程 - JavaScript 教程 - PHP 教程

文件包含

  • PHP代码的执行流程
  1. 读取代码文件(PHP程序)
  2. 编译:将PHP代码转换成字节码(生成 opcode)
  3. zendengine 来解析 opcode,按照字节码进行逻辑运算;
  4. 转换成对应的 HTML 代码

文件加载原理

  1. 在文件加载(include 或者 require)的时候,系统会自动的将被包含文件中的代码相当于嵌入到当前文件中;
  2. 加载位置:在哪加载,对应的文件中的代码嵌入的位置就是对应的 include 位置
  3. 在 PHP 中被包含的文件是单独进行编译的

总结:PHP文件在编译过程中有错误,则不执行;但是如果是从外部引入的PHP文件中有错误, 系统会在从上往下执行到该 include 文件所在语句时停止执行。

include 和 require 区别

可以完全理解为Android中的 include

  • include 和 include_once 的区别:

include 系统会碰到一次,执行一次;如果对统一个文件进行多次加载,那么系统会执行多次; include_once 只会执行一次;

  • 还是上面 temp.php 和 test.php
include 'temp.php';

echo '<br>';
include 'temp.php';

include_once'temp.php';
include_once'temp.php';

效果:

首页 - HTML 教程 - CSS 教程 - JavaScript 教程 - PHP 教程
首页 - HTML 教程 - CSS 教程 - JavaScript 教程 - PHP 教程

其中这两次输出都是由 include 执行的。

require 和 include的区别:本质都是包含文件,唯一的区别在于包含不到文件的时候,报错的形式不一样 include 的错误级别比较轻:不会阻止代码执行

文件加载路径

绝对路径

从磁盘的根目录开始本地绝对路径
Windows盘符C:/路径/PHP文件
Linux/路径/PHP文件
从网站根目录开始网络绝对路径
/相对于网站主机名字对应的路径
Localhost/index.php -> E:/server/apache/htdocs/index.php

相对路径

从当前文件所在目录开始的路径
  ./ 👉表示当前文件夹
 ../ 👉上级目录当前文件夹的上一层文件夹

🌰

//绝对路径
include_once 'E:/server/apache/htdocs/include1.php';

//相对路径加载
//include_once 'include1.php';	//默认当前文件本身

//include_once './include1.php';

//复杂相对路径
//include_once '../htdocs/include1.php';

echo $a;

绝对路径和相对路径的加载区别

  1. 绝对路径相对效率偏低,但是相对安全(路径不会出问题)
  2. 相对路径相对效率高些,但是容易出错(相对路径会发生改变)

文件嵌套包含

嵌套包含的时候就很容易出现相对路径出错的问题:相对路径会因为文件的包含而改变(./和../):windows下面,每一个文件夹下都有.和..的文件夹。


相关文章

下一篇 5.PHP函数

评论