iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP 中的 require_once 与 include
  • 755
分享到

PHP 中的 require_once 与 include

2024-02-27 20:02:04 755人浏览 安东尼
摘要

对于开发人员,在开发周期中,我们在开发或生产目录中分隔不同的 PHP 文件,但我们可能需要另一个 php 文件中的函数或类。在另一个文件中重复相同的类或函数是违反直觉的,并且违反 DRY 方法。 因

对于开发人员,在开发周期中,我们在开发或生产目录中分隔不同的 PHP 文件,但我们可能需要另一个 php 文件中的函数或类。在另一个文件中重复相同的类或函数是违反直觉的,并且违反 DRY 方法。

因此,PHP 有四个关键字来添加或访问另一个 PHP 文件的内容,includerequireinclude_oncerequire_once。在本文中,我们将考虑所有关键字,但我们将更多地关注 require_onceinclude


何时在 PHP 中使用 includerequire 关键字

关键字 includerequire 将所有内容、文本或代码或标记从指定的 PHP 文件复制到包含语句的目标 PHP 文件中。然而,include 关键字在处理失败时的行为与 require 不同。

  • require 产生 fatal error (E_COMPILE ERROR) 并停止脚本。
  • include 只产生一个 warning (E_WARNING),即使下一部分需要你包含的 PHP 文件中的代码,脚本也会继续。

如果没有发生错误,则两个关键字的方式相同。

让我们尝试添加一个简单的 PHP 文件(variables.php),其中包含几个变量到我们当前的 PHP 文件中。

variables.php 文件:


<?php

$team = 'Golden State Warriors';
$fav_player = 'Steph Curry';

?>

现在,让我们使用 include 关键字来添加 variables.php 的内容:


<?php

echo "My favourite player is $fav_player and he plays for $team";

include 'variables.php';

echo "My favourite player is $fav_player and he plays for $team";

?>

上述代码片段的输出:


My favourite player is and he plays for

My favourite player is Steph Curry and he plays for Golden State Warriors

如你所见,第一行没有输出变量的内容,因为我们没有包含 variables.php 文件,但是一旦我们添加它,它就有了变量的内容。

现在,让我们使用 require 关键字:


<?php

echo "My favourite player is $fav_player and he plays for $team";

include 'variables.php';

echo "My favourite player is $fav_player and he plays for $team";

?>

输出:


My favourite player is and he plays for

My favourite player is Steph Curry and he plays for Golden State Warriors

产生了相同的输出。现在,让我们在代码中拼错 variables.php 文件,看看效果。

对于 include 关键字:


My favourite player is and he plays for

Warning: include(variable.php): failed to open stream: No such file or directory in /home/runner/Jinku/index.php on line 5

Warning: include(): Failed opening 'variable.php' for inclusion (include_path='.:/nix/store/bq7pj5lz7rq92p3D3qyy25lpzic9phy5-php-7.4.21/lib/php') in /home/runner/Jinku/index.php on line 5

My favourite player is and he plays for

对于 require 关键字:


My favourite player is and he plays for

Warning: require(variable.php): failed to open stream: No such file or directory in /home/runner/Jinku/index.php on line 5

Fatal error: require(): Failed opening required 'variable.php' (include_path='.:/nix/store/bq7pj5lz7rq92p3d3qyy25lpzic9phy5-php-7.4.21/lib/php') in /home/runner/Jinku/index.php on line 5

你现在可以看到两者之间的区别。使用 include 关键字,即使包含的文件不存在并且只给出警告,代码也会继续执行。

但是,使用 require 关键字时,代码会产生致命错误并在此时完全停止。


何时在 PHP 中使用 require_onceinclude 关键字

有适当的区域可以使用 includerequire。建议一直使用 require;但是,如果你的应用程序可以在没有我们打算添加到当前 PHP 文件的 PHP 文件中的内容的情况下运行,则可能不会出现问题。

为了提供更多上下文来理解 includerequirerequire_once 关键字,让我们尝试一个示例。对于这个例子,我们将创建一个 functions.php 文件,该文件将被包含在内并需要展示差异。

functions.php 文件:


<?php

function add_sums($a, $b) {
  return $a + $b;
}

?>

让我们使用 include


<html>
  <head>
    <title>PHP Test</title>
  </head>
  <body>
    <?php
    include 'functions.php';

        echo "The program is starting\n";
    $sum = add_sums(2,3);

    echo "The program is done\n";
    echo $sum;
    ?>
  </body>
</html>

代码片段的输出:


The program is done 5

让我们使用 require


<html>
  <head>
    <title>PHP Test</title>
  </head>
  <body>
    <?php
    require 'functions.php';

        echo "The program is starting\n";
    $sum = add_sums(2,3);

    echo "The program is done\n";
    echo $sum;
    ?>
  </body>
</html>

代码片段的输出:


The program is done 5

但是,如果 functions.php 文件不可用,而我们使用 include,则输出如下:


Warning: include(functions.php): failed to open stream: No such file or directory in /home/runner/Jinku/index.php on line 7

Warning: include(): Failed opening 'functions.php' for inclusion (include_path='.:/nix/store/bq7pj5lz7rq92p3d3qyy25lpzic9phy5-php-7.4.21/lib/php') in /home/runner/Jinku/index.php on line 7

The program is starting

Fatal error: Uncaught Error: Call to undefined function add_sums() in /home/runner/Jinku/index.php:9 Stack trace: #0 {main} thrown in /home/runner/Jinku/index.php on line 9

尽管 functions.php 不存在,但代码仍在运行,直到由于调用未定义的函数而发生致命错误,这不是在 PHP 应用程序中工作的有效方法。

但是,当我们使用 require 时,错误如下所示:


Warning: require(functions.php): failed to open stream: No such file or directory in /home/runner/Jinku/index.php on line 7

Fatal error: require(): Failed opening required 'functions.php' (include_path='.:/nix/store/bq7pj5lz7rq92p3d3qyy25lpzic9phy5-php-7.4.21/lib/php') in /home/runner/Jinku/index.php on line 7

因为我们使用了 require 关键字,我们可以防止由于调用未定义函数而导致的致命错误。对于相当复杂的 PHP 应用程序,require 将更适合能够快速捕获错误并防止不必要的后果。

现在,让我们更进一步。让我们使用 require_once 关键字:


<html>
  <head>
    <title>PHP Test</title>
  </head>
  <body>
    <?php
        // Previous code START
    require_once 'functions.php';

        echo "The program is starting\n";
    $sum = add_sums(2,3);

    echo "The program is done\n";
    echo $sum;
        // Previous code ENDS

        // Additional code STARTS

    echo "Another program begins";
    require 'functions.php';
    $sum = add_sums(2,3);
    echo $sum;
    echo "Another program ends";
    ?>
  </body>
</html>

上述代码片段的输出会产生一个致命错误:


The program is starting
The program is done
5
Another program begins

Fatal error: Cannot redeclare add_sums() (previously declared in /home/runner/Jinku/functions.php:3) in /home/runner/Jinku/functions.php on line 3

require_once 关键字将检查文件是否已被包含,如果是,则不再包含或要求它。因此,因为我们之前使用了 require_once 关键字,它可以防止要求甚至包含 functions.php 中的代码。

你可能希望这样做以防止重新声明函数调用或变量值分配,这对你的代码来说可能代价高昂。

在示例中,如果我们使用 require 两次,它将再次调用该函数并产生与之前相同的效果,结果为 5。

组合来理解。

  • requirerequire_once 将引发致命错误。
  • includeinclude_once 将引发致命错误。
  • require_oncerequire_once 可以正常工作,但所有内容将被召回和重新声明。
  • include_onceinclude_once 可以正常工作,但所有内容将被召回和重新声明。

--结束END--

本文标题: PHP 中的 require_once 与 include

本文链接: https://www.lsjlt.com/news/569042.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP 中的 require_once 与 include
    对于开发人员,在开发周期中,我们在开发或生产目录中分隔不同的 PHP 文件,但我们可能需要另一个 PHP 文件中的函数或类。在另一个文件中重复相同的类或函数是违反直觉的,并且违反 DRY 方法。 因...
    99+
    2024-02-27
  • php中include(与require(的区别
    php 中 include() 和 require() 的区别:找不到文件时:require() 触发致命错误,include() 触发警告。效率:require() 通常比 inclu...
    99+
    2024-04-27
  • php中require_once的用法
    require_once 函数在 php 中用于包含文件,确保文件只被包含一次,避免重复包含错误。语法:require_once(string $filename)参数:$filenam...
    99+
    2024-04-27
  • php中include(与require(的区别
    php 中 include() 和 require() 的区别:找不到文件时:require() 触发致命错误,include() 触发警告。效率:require() 通常比 inclu...
    99+
    2024-04-27
  • php中include的作用
    php 中 include 可将外部文件内容插入到当前脚本中。它方便模块化代码、代码重用和延迟加载,但也可能导致文件丢失、性能开销和命名空间冲突。 PHP 中 include 的作用 ...
    99+
    2024-04-29
    延迟加载
  • PHP中require和require_once怎么使用
    在PHP中,`require`和`require_once`都是用于引入文件的命令。使用`require`命令时,需要指定一个文件路...
    99+
    2023-08-11
    PHP
  • PHP中require和require_once的区别是什么
    在PHP中,require和require_once都是用于引入文件的指令,它们之间的区别如下:1. require语句用于引入指定...
    99+
    2023-08-11
    PHP
  • 浅谈C语言中include""与include<>的区别
    新建控制台应用程序 Win32 Application和Win32 Console Application 都是工作在32位Windows环境的程序。其中: (1)Win32 Ap...
    99+
    2024-04-02
  • php中的include怎么使用
    今天小编给大家分享一下php中的include怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在PHP中,includ...
    99+
    2023-06-29
  • PHP中include语句的用法示例
    小编给大家分享一下PHP中include语句的用法示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!PHP include 实例...
    99+
    2024-04-02
  • php中include报错的解决方法
    这篇文章将为大家详细讲解有关php中include报错的解决方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php include报错的解决办法:1、检查include文件的位置是否正确;2、检测被包含...
    99+
    2023-06-14
  • PHP中include和require的使用详解
    在PHP中,有两种包含外部文件的方式,分别是include和require。他们之间有什么不同呢? 如果文件不存在或发生了错误,require产生E_COMPILE_ERROR级别...
    99+
    2024-04-02
  • PHP中INCLUDE语句的示例分析
    这篇文章主要介绍了PHP中INCLUDE语句的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。每次遇到INCLUDE时PHP INCLUDE语句就包含指定的文件。所以你...
    99+
    2023-06-17
  • PHP中的include和require怎么使用
    本篇内容介绍了“PHP中的include和require怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!概要require() 语句的...
    99+
    2023-06-27
  • PHP中的include和require有什么不同
    这篇文章主要讲解了“PHP中的include和require有什么不同”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP中的include和require有什么不同”吧!在PHP中,有两种...
    99+
    2023-06-20
  • PHP中怎么使用include和require
    这篇文章主要介绍PHP中怎么使用include和require,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php的框架有哪些php的框架:1、Laravel,Laravel是一款免费并且开源的PHP应用框架。2、P...
    99+
    2023-06-14
  • 聊聊PHP中require_once()函数为什么不好用
    在上一篇《聊聊PHP中die()和sleep()函数的用法》中给大家简单介绍了die()和sleep()函数的使用方法,感兴趣的朋友可以去学习了解一下~ 本文将告诉你PHP中requ...
    99+
    2024-04-02
  • Sass中@mixin与@include有什么用
    这篇文章主要介绍了Sass中@mixin与@include有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Sass 是一种 CSS 的预编译语言。它提供了 变量(var...
    99+
    2023-06-28
  • PHP中include和include_once的区别是什么
    include和include_once都是PHP中用于包含文件的语句,但它们之间有一些区别。include语句用于包含指定的文件,...
    99+
    2023-08-11
    PHP
  • PHP中include和include_once怎么使用
    在PHP中,include和include_once用于将一个文件的内容包含到另一个文件中。使用include时,语法如下:```p...
    99+
    2023-08-11
    PHP
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作