10. PHP中文件加载

这一篇博客主要讲文件加载的四种形式(include,include_once,require,require_once)

1. 综述

有四种文件加载的形式(不是函数)

  1. include
    • include_once
    • require
    • require_once

它们的本质是一样的都是用于加载/引入/包含/载入一个外部文件到当前php代码中来。

他们只在2个方面有细微区别:

  1. xxx_once 和xxx的区别:前者能够保证不会被重复加载
    • require 和 include的区别:如果被包含文件不存在,即引用失败(出错)时,include发出警告并继续执行后续代码,require直接终止。

它们都是语法结构,而非函数,使用形式可以有两种:

  1. include ‘文件路径’;
    • include(‘文件路径’)

2. 文件路径问题

2.1 相对路径

就是以”./”,或”../”,开头的路径

  1. ./ 表示当前网页文件的所在位置(文件夹,目录);
    • ../ 表示当前网页文件的所在位置的上一级位置(文件夹,目录)

这种相对位置对一个网站中的所有内容(包括php,html,图片,css,js文件)都有效

2.2 绝对路径

  1. 本地绝对路径:

2.3 只有文件名(无路径)

在php的include语法(其他3个也一样)中,如果只给出文件名,而没有给出路径,则此时有其内部找到该文件的规则,如下:

2.3.1. 首先在系统设置的include目录中查找:

在php.ini配置文件中,有:include_path设定:

;windows:"\path1;\path2"
;include_path = ".;C:\php\includes"

可见默认无设定;该设定其实可以设定多个目录,其间用分号分开,系统会按顺序依次查找要载入的文件。修改php.ini中的include_path为

;windows:"\path1;\path2"
;include_path = ". ;C:\php\includes; C:\users\chang\test"

我们也可以在脚本中设定:

<?php
//设定配置文件中的include_path的值,代码中的设定只对当前代码有效
//而且这里的设定无需重启apache
set_include_path('C:\users\chang\test')


//更常见的做法
$path = get_include_path();//先获取系统的include_path值
$path_new = $path . PATH_SEPARATER . "C:\users\chang\test";
//PATH_SEPARATER:是系统常量,代表目录分隔符
//unix系列:":"
//windows系列:";"
set_include_path($path_new);//这样不会丢失原有的路径设置

2.3.2 上面没找到,在当前执行的网页文件所在目录(所谓当前工作目录)查找:

所谓当前网页文件,就是地址栏中显示的那个文件名。

2.3.3 上面还没找到,则在当前include命令所在文件的所在目录中查找:

如果一个文件(A)包含文件B,在文件B中又有include命令包含文件C,
此时B中的路径问题就可能发生这种情况。


3. 文件载入执行流程

  1. 从include语句处退出php脚本模式(进入html代码模式)
    • 载入include语句所设定的文件中的代码,并执行之(如同在当前文件中一样)
    • 退出html模式重新进入php脚本模式,继续之后的代码

4. return关键字

return 关键字的一般作用

  1. return; //单纯结束
    • return x;// x

那么,被包含(载入)的文件中的return关键字也具有同样作用

main.php

<?php
echo "main中第一行";
include 'page1.php';
echo "main中第二行";

$n = include 'page2.php';//将page4执行结果返回给$n

echo "主文件中n=$n"

page1.php

<?php
echo "page1中第一行";
echo "page1中第二行";
return;
echo "page1中第三行";

page2.php

<?php
$m = 10;
echo "page2中第一行";
echo "page2中第二行";
return $m;
echo "page2中第三行";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值