引入方式
- include ; include_once
- require ; require_once (推荐)
主要区别
- include 和 require 除了处理错误的方式不同之外,在其他方面都是相同的
- require 如果引入的文件不存在,生成一个致命错误,在错误发生后脚本会停止执行
- include 如果引入的文件不存在,生成一个警告,在错误发生后脚本会继续执行
- _once 的作用:只引入1次,如果之前已经引用过,不再重复引用
代码示例
include("./sub.php"); // 就相当于把 sub.php 里的代码替换到这里
t();
// include_once // 相同文件仅能引入一次
include_once ("./sub.php"); // 就相当于把 sub.php 里的代码替换到这里
include_once ("./sub.php"); // 无效
t();
引入流程说明
进入被引入文件执行
- 引入文件不是简单的复制替换
- 引入文件时,当遇到被引入文件的
return
语句时,引入过程终止,返回主文件继续执行
// 被引入文件
$age = 18;
return; // return会结束脚本文件的执行
// 主文件
echo 'start'.'<br>';
require '1.php';
echo $age.'<br>';
echo 'end'.'<br>';
// 输出:start 18 end
// 分析:如果是简单的复制替换,那只能打印 start
被引入文件中return的说明
- 引入文件时,当遇到被引入文件的
return
语句时,引入过程终止,返回主文件继续执行 - 若被引入文件中没写
return
,则在被引入文件引入结束后默认return 1
- 若被引入文件中有
return
,则遇到return
,终止引用,返回主文件继续执行,并将return
值返回给require '.'
// 被引入文件
$age = 18;
$arr = array(
'host' => 'localhost',
'user' => 'root',
'pwd' => ''
);
return $arr;
// 主文件
echo 'start'.'<br>';
$res = require '1.php';
print_r($res); // // Array ([host]=>localhost [user]=>root [pwd]=>)
echo $age.'<br>';
echo 'end'.'<br>';
文件引入通用结构
// 获取网站的根目录
define('ROOT_PATH',dirname(__DIR__).'/');
// 获取模板路径
define('TEMP_PATH',ROOT_PATH.'temp/');
// 获取lib路径
define('LIB_PATH',ROOT_PATH.'lib/');
// 引入lib路径中的 functions.php 文件
require LIB_PATH.'function.php';