PHP 文件包含include/require
在一个 PHP 脚本中,去将另一个文件包含进来
文件包含的作用
实现代码共享重用,协作共同完成一件事
使用被包含文件中的内容:向上包含(所要)
自己的东西可以给别的文件使用:向下包含(给与)
文件包含的四种形式
include 包含文件
include_once 一个文件最多被包含一次
require 与 include 相同
require_once 与 include_once 相同
语法
include '文件路径'; include('文件路径');
向上包含:先包含文件,再使用文件中的内容
向下包含:先准备内容,然后包含另外的文件,在另外的文件中使用当前内容
示例: 向上包含
<?php // demo1.php $PI = 3.14;
<?php // demo.php include 'demo1.php'; echo $PI; // 3.14
示例: 向下包含
<?php // demo1.php $PI = 3.14; include 'demo.php'; // 3.14
<?php // demo.php echo $PI;
文件加载原理
文件加载(include 或者 require)的时候,系统会自动将被包含的文件中的代码嵌入到当前文件中
在哪里加载,就嵌入到哪里
PHP 代码的执行流程
读取 PHP 代码文件
编译:将 PHP 代码转换成字节码(opcode)
zendengine 来解析 opcode,按照字节码去进行逻辑运算
转换成对应的 HTML 代码
PHP 中被包含的文件是单独进行编译的
PHP 文件在编译的过程中,如果出现了语法错误,那么会失败(不会执行);
但是,如果被包含的文件有错误的时候,系统会在执行到包含 include 这条语句的时候才会报错
示例
<?php // demo.php // 此处故意少了一个分号 echo $PI
<?php // demo1.php $PI = 3.14; // 该行正常输出 echo 'hello'; // 执行到该行会报错 include 'demo.php'; // helloPHP Parse error: syntax error, unexpected end of file, expecting ',' or ';'
include 和 require 区别
include 和 include_once 区别
include:系统碰到一次,执行一次,如果多次加载,会执行多次
include_once:系统碰到多次,也只会执行一次
include 和 require 区别
相同点:都是包含文件
不同点:包含不到文件时,报错的形式不一样
include 如果包含出错代码,会继续执行 Warning
require 如果包含出错代码,不在继续执行 Fatal
文件加载路径
1、绝对路径:(/)
从磁盘的根目录开始(本地绝对路径)
从网站根目录开始(网络绝对路径)
2、相对路径:从当前文件所在目录开始的路径
. 表示当前文件夹
./ 表示当前路径
../ 表示上级目录
绝对路径和相对路径的加载区别
绝对路径效率偏低,路径不会出错
相对路径效率高,容错出错
// 相对路径 include_once 'demo.php'; // 默认当前文件本身 include_once './demo.php'; include_once '../demo.php'; // 绝对路径 include_once '/lib/demo.php';
文件嵌套包含
一个文件包含另个文件,另个文件又包含其他文件
嵌套包含相对路径容易出错