艺考网
全国站

PHP你真的了解INCLUDE和REQUIRE吗?

xunaa
2024-10-06 05:42:41
编辑说
1.注意,这两个是语言结构,而不是方法。类似于echo、print、isset()、empty()、unset()等,它们是语言结构,而不是函数!
2. include 和require 都将外部文件引入到当前上下文中,但

1.注意,这两个是语言结构,而不是方法。类似于echo、print、isset()、empty()、unset()等,它们是语言结构,而不是函数!

2. include 和require 都将外部文件引入到当前上下文中,但它们有一些区别:

2.关于导入的文件:当包含一个文件时,其中包含的代码继承了include和require所在行的变量范围。从那时起,该行调用文件中可用的任何变量也可在被调用文件中使用。但是,包含文件中定义的所有函数和类都具有全局作用域。

EG1:

变量.php

?php

$颜色='绿色';

$fruit='苹果';

测试.php

?php

echo 'A $color $fruit'; //一个

包含“vars.php”;

echo 'A $color $fruit'; //一个青苹果

如果include 出现在调用文件的函数内,则被调用文件中包含的所有代码的行为将如同在该函数内定义一样。所以它将遵循该函数的变量范围。此规则的一个例外是魔术常量,它们在包含发生之前由解析器处理。

3.包含返回值:

处理返回值:包括返回FALSE 并在失败时发出警告。除非包含文件中另有指定,否则成功包含将返回1。您可以在包含文件中使用return 语句来终止文件中程序的执行并返回到调用它的脚本。也可以从包含的文件返回值。 include调用的返回值可以像普通函数一样获取。但是,当包含远程文件时,这不起作用,除非远程文件的输出具有合法的PHP 开始和结束标记(像任何本地文件一样)。您可以在标记内定义所需的变量,这些变量将在包含文件的位置之后可用。因为include 是一种特殊的语言结构,所以它的参数不需要括号。比较它们的返回值时要小心。

EG2:

?php

PHP你真的了解INCLUDE和REQUIRE吗?

//不起作用,评估为include(('vars.php')==TRUE),即include('')

if (include('vars.php')==TRUE) {

回显“确定”;

}

//作品

if ((include 'vars.php')==TRUE) {

回显“确定”;

}

解释:

$bar 的值为1,因为include 运行成功。请注意上述示例中的差异。第一个在包含的文件中使用return,另一个则不使用。如果无法包含该文件,则返回FALSE 并发出E_WARNING 警告。如果包含文件中定义了函数,则这些函数无论是在返回之前还是之后定义,都可以在主文件中独立使用。如果该文件被包含两次,PHP 5 会发出致命错误,因为该函数已经定义,但PHP 4 不会对返回后定义的函数发出错误。建议使用include_once,而不是检查文件是否包含并在包含的文件中有条件地返回。

3.包含文件的处理:(这个很重要)

当包含文件时,解析器会离开PHP 模式并在目标文件的开头进入HTML 模式,并在文件结尾处恢复。因此,目标文件中需要作为PHP 代码执行的任何代码都必须包含在有效的PHP 开始和结束标记内。并且执行完成后,直接添加到缓冲区中,将导入文件中的变量添加到当前作用域变量链中。

EG3:

//t1.php文件内容

第1234章?5678?php 返回1;9

//t2.php文件内容

?php

包括“t1.php”;

回显$名称;

//开始执行t2.php

PHP你真的了解INCLUDE和REQUIRE吗?

将输出:12345678PQS

案例分析:

首先,当包含“t1.php”时;文件后,PHP解析器离开PHP模式并进入HTML模式开始解析。因为HTML模式直接将内容添加到缓冲区中,所以不会先将标签1234添加到缓冲区中,然后执行?php $name='PQS';此处,$name 变量将被添加到t2.php 中的include 't1.php' 代码的在线变量范围中。然后返回HTM模式并将5678添加到缓冲区中。接下来,当遇到“php return 1;”时,就会开始进入PHP模式执行代码。因为include接受return,所以这里return 1之后会加载整个文件。到这里就结束了,返回到t2的代码执行域,这也是为什么最后没有输出9的原因。

演示PHP 将文件输入缓冲区的示例:

//t3.php

1234567

//t4.php

?php

$string=get_include_contents('t3.php');

函数get_include_contents($filename) {

if (is_file($文件名)) {

ob_start();

包括$文件名;

$内容=ob_get_contents();

ob_end_clean();

返回$内容;

}

返回假;

}

回显$字符串;

PHP你真的了解INCLUDE和REQUIRE吗?

//执行t4.php

1234567

案例分析:

函数get_include_contents($filename)

在包含之前打开缓冲区。 include引入t3.php文件时,使用ob_get_contents()方法获取缓冲区数据并赋值给$contents。然后使用ob_end_clean丢弃缓冲区数据,最后返回$contents。通过php运行时最终输出的返回值是t3.php的值。

4.include支持引入URL:

?php

/* 此示例假设www.example.com 配置为解析.php *

* 文件而不是.txt 文件。另外,这里的“Works”意味着变量*

* $foo 和$bar 在包含的文件中可用。 */

//不会工作; www.example.com 未将file.txt 作为PHP 处理

包括'http://www.example.com/file.txt?foo=1bar=2';

//不会工作;在上查找名为“file.php?foo=1bar=2”的文件

//本地文件系统。

包含'file.php?foo=1bar=2';

//有效。

包括'http://www.example.com/file.php?foo=1bar=2';

$foo=1;

$酒吧=2;

包含“文件.txt”; //有效。

用户评论

入骨相思

卧槽,这标题太燃了!我也是经常用 include 和 require 的...

    有7位网友表示赞同!

无寒

说的对啊,很多新手对这两个指令都不太清楚的区别

    有15位网友表示赞同!

゛指尖的阳光丶

我记得include 主要是加载文件, require 如果文件不存在就报错是吧?

    有7位网友表示赞同!

眉黛如画

学习PHP的小伙伴一定要好好了解一下INCLUDE和REQUIRE,很常用啊!

    有9位网友表示赞同!

她的风骚姿势我学不来

确实,这两条指令在PHP开发中真的很常见

    有18位网友表示赞同!

滴在键盘上的泪

我感觉这篇文章应该能解决很多同学关于include 和require 的疑惑吧!

    有13位网友表示赞同!

暮光薄凉

终于有篇讲清楚 INCLUDE、REQUIRE 的文章了!太棒了!

    有11位网友表示赞同!

发型不乱一切好办

看完标题就感觉要学习一发

    有10位网友表示赞同!

小清晰的声音

PHP 我懂一点

    有8位网友表示赞同!

太易動情也是罪名

了解一下,看这标题我猜是个深度解读?

    有16位网友表示赞同!

念旧情i

INCLUDE 和 REQUIRE 用的场合挺不同的啊

    有11位网友表示赞同!

風景綫つ

php 开发的必备指令!

    有19位网友表示赞同!

陌然淺笑

学习时间到了!...

    有7位网友表示赞同!

不离我

这两者之间的区别还真是容易让人分不清,这篇文章看起来很有帮助!

    有8位网友表示赞同!

鹿先森,教魔方

终于搞明白了include 和 require 的区别了!!

    有5位网友表示赞同!

龙卷风卷走爱情

看标题就知道这篇文章绝对干货满满

    有17位网友表示赞同!

哥帅但不是蟋蟀

以前一直不知道这两个指令的区别

    有7位网友表示赞同!

青墨断笺み

PHP 学习不容易啊!

    有17位网友表示赞同!

免责声明
本站所有收录的学校、专业及发布的图片、内容,均收集整理自互联网,仅用于信息展示,不作为择校或选择专业的建议,若有侵权请联系删除!

大家都在看

PHP你真的了解INCLUDE和REQUIRE吗?

PHP你真的了解INCLUDE和REQUIRE吗?

1.注意,这两个是语言结构,而不是方法。类似于echo、print、isset()、empty()、unset()等,它们是语言结构,而不是函数! 2. include 和require 都将外部文件引入到当前上下文中,但
2024-10-06
PHP中include和require的区别详解

PHP中include和require的区别详解

include() 的使用方式与require 相同: include('myfile.php')语句一般放在流程控制的处理部分。 include 在使用时被加载。 require 是在开始时加载的。 _once后缀表示已
2024-10-06
C语言中include的使用方法

C语言中include的使用方法

#include的使用方法有两种,如下: #include stdHeader.h #include 'myHeader.h' 使用尖括号和双引号''的区别在于头文件的搜索路径不同: 尖括号:编译器会在系统路径中搜索头文
2024-10-06
C++ 和C++ 之间的各种差异包括

C++ 和C++ 之间的各种差异包括

1.#include #include 指的是编译器的类库路径中的头文件。 如果你的编译器定义的内置头文件是在C:\Keil\c51\INC\下引用的,那么#includestdio.h引用的是头文件C:\Keil\c51\I
2024-10-06
中学英语同义词分析180讲包括、排除

中学英语同义词分析180讲包括、排除

1. 包括及物动词。它的意思是“包含、包含、列出、包含在内”。它的意思是“包括……(即在整体之内)”。例如: 价格包括房屋和家具。 该名单包括许多新名字。 我把鸡蛋列入了
2024-10-06
如果≠ 在这种情况下

如果≠ 在这种情况下

参加测试 下雨了,你最好带上雨伞。 A、以防万一 B、在这种情况下 知识点分析 • in the case of 大家看到in the case of.这句话都觉得很容易理解。case的意思是“实
2024-10-06
微软品牌电脑配件获得“重生”:Incase将推出“微软设计”系列产品

微软品牌电脑配件获得“重生”:Incase将推出“微软设计”系列产品

据官方介绍,微软原创的Sculpt人体工学键盘、Modern鼠标、无线桌面键鼠套装“850”以及时尚网络摄像头等畅销产品将以“Designed by Microsoft”的名义以Incase品牌销售。该
2024-10-06
Incase确认2024Q4推出Designed by Microsoft系列周边产品

Incase确认2024Q4推出Designed by Microsoft系列周边产品

据IT House 2023 年4 月报道,微软当时表示,将不再销售微软品牌下的鼠标、键盘、摄像头等外围产品,而是专注于Surface 品牌的电脑配件。 Incase母公司Onward Brands今年1月
2024-10-06
万一有什么用

万一有什么用

外面很冷,你最好穿上外套以防万一。 外面很冷,你最好穿上外套,以防万一。 更仔细地检查你的论文以防万一。 再次仔细检查试纸,以防万一。 (2)用作连词引导条件状语从句和目的状
2024-10-06
常用英语单词难点用法216:c中的case(续1)

常用英语单词难点用法216:c中的case(续1)

In case是“未雨绸缪,以防万一……”而不是“发生了就立即处理”。这个重要但容易模糊的区别可以从下面的例子得到更好的解释:……副总统唯一的宪法职责是在总统去世或丧失行
2024-10-06