include 与 require 关键字

include 与 require 关键字

作用:
  1. 它们都是用来包含并且运行指定文件的。
  2. 如果被包含的文件包含关键字 return,那么 return后面的代码将不会执行。并且可以使用变量来接收return的返回值。被包含文件没有 return时,也会有结果,那些结果可以用来判断是否导入成功
区别:

它们包含的文件不存在时所产生的错误级别不同。其中:

  1. include产生 E_WARNING 级别错误,脚本继续运行
  2. require产生 E_COMPILE_ERROR 级别错误,脚本终止运行
用法:(关键字的用法一致)
<?php
	include 'aa.php';  //只包含文件名的文件
	include('./bb.php'); //相对路径的文件
	require '/aa.php';  //绝对路径的文件
	
	//如果 cc.php 文件使用 return 返回 ‘我是 cc 的返回值’
	$c = require('cc.php'); // $c 的结果为  ‘我是 cc 的返回值’
扩展:
  1. include_once 与 require _once 的用法一致,但是这两个在导入前,会检查是否导入过,如果有就跳过
  2. include_path配置的值,会影响包含只有文件名的文件的路径。

解释:
只有文件名的路径:aa.phpbb.php
相对路径的路径:./aa.phpxxx/bb.php
绝对路径:/aa.phpC:\aa\index.php

实验:

目的:通过实验搞清楚包含只有文件名的文件时,程序是如何寻找文件的
实验流程:

  1. 已知php.ini 中配置: include_path='.;C:\php\pear'
步骤一:(创建实验文件)

D:\a.php 文件

<?php
echo PHP_EOL . '我在 ' . __FILE__ . PHP_EOL;
require 'test/b.php';

D:\test\b.php 文件

<?php
echo PHP_EOL . '我在 ' . __FILE__ . PHP_EOL;
require 'c.php';

c.php 文件 (拷贝3份,分别复制到如下路径D:\c.php C:\php\pear\c.php D:\test\c.php)

<?php
echo PHP_EOL . '我在 ' . __FILE__ . PHP_EOL;
步骤二:(运行程序,查看系统获取文件的顺序)

去到 D:\ 目录,打开CMD,执行如下命令 php a.php,输出:

我在 D:\a.php
我在 D:\test\b.php
我在 D:\c.php

程序读取的是D:\c.php文件。这是配置文件第一个分号前的点.决定的,表示‘当前目录’,即去当前目录寻找,执行文件的路径为D:\a.php,所以去D:\下面找a.php文件

步骤三:

删除D:\c.php,继续运行 php a.php,输入如下:

我在 D:\a.php
我在 D:\test\b.php
我在 C:\php\pear\c.php

这次程序读取的是D:\c.php文件,这是配置文件第一个分号后的点C:\php\pear\c.php决定的,如果还有很多分号,可以以此类推

步骤四:

删除C:\php\pear\c.php,继续运行 php a.php,输入如下:

我在 D:\a.php
我在 D:\test\b.php
我在 D:\test\c.php

这次程序读取的是D:\test\c.php文件,是因为配置文件读取完了,找不到相关文件,然后寻找‘脚本所在的工作目录’

步骤五:

删除D:\test\c.ph,继续运行 php a.php,输入如下:

Fatal error: require(): Failed opening required 'c.php'

这次程序报错了,是因为配置目录与脚本工作目录都没有相关文件导致的

实验结论:
  1. 程序查找包含只有文件名的文件路径时,会优先根据配置的参数逐个获取寻找文件,如果找不到,就去脚本所在的工作目录下寻找;如果还找不到,就抛出上述级别的错误
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值