PHP - 文件包含



PHP 中的include 语句类似于 Java 或 Python 中的import 语句以及 C/C++ 中的#include 指令。但是,PHP 中 include 语句的工作方式略有不同。

Java/Python 中的 import 或 C/C++ 中的 #include 只加载一个或多个语言结构,例如在一个文件中定义的函数或类到当前文件中。相反,PHP 中的 include 语句将另一个文件中的所有内容都带入现有的 PHP 脚本中。它可能是一个 PHP 代码、一个文本文件、HTML 标记等。

PHP 中的“include”语句

这是一个关于 PHP 中 include 语句如何工作的典型示例:

myfile.php

<?php
   # some PHP code
?>

test.php

<?php
   include 'myfile.php';
   # PHP script in test.php
?>

PHP 中的 include 关键字非常方便,尤其是在您需要在项目中的多个 PHP 脚本中使用相同的 PHP 代码(函数或类)或 HTML 标记时。一个典型的例子是创建应该出现在 Web 应用程序所有页面上的菜单。

假设您想为您的网站创建一个通用菜单。然后,创建一个名为“menu.php”的文件,内容如下:

<a href="https://tutorialspoint.com/index.htm">Home</a> - 
<a href="https://tutorialspoint.com/ebxml">ebXML</a> - 
<a href="https://tutorialspoint.com/ajax">AJAX</a> - 
<a href="https://tutorialspoint.com/perl">PERL</a> <br />

现在创建任意数量的页面,并包含此文件以创建标题。例如,现在您的“test.php”文件可以包含以下内容:

<html>
   <body>
      <?php include("menu.php"); ?>
      <p>This is an example to show how to include PHP file!</p>
   </body>
</html>

假设这两个文件都位于 XAMPP 服务器的文档根目录文件夹中。访问https://127.0.0.1/test.php URL。它将产生以下输出

PHP File Include

当 PHP 解析器遇到include关键字时,它会尝试在执行当前脚本的同一目录中找到指定的文件。如果未找到,则搜索“php.ini”的“include_path”设置中的目录。

包含文件时,其包含的代码将继承 include 发生的那一行的变量作用域。调用文件中该行可用的任何变量都将从该点起在被调用文件中可用。但是,包含文件中定义的所有函数和类都具有全局作用域。

示例

在以下示例中,我们有一个“myname.php”脚本,其中声明了两个变量。它包含在另一个脚本 test.php 中。变量加载到全局作用域中。

myname.php

<?php
   $color = 'green';
   $fruit = 'apple';
?>

test.php

<?php
   include "myname.php";
   echo "<h2>$fname $lname</h2>";
?>

当浏览器访问https://127.0.0.1/test.php时,它显示:

Ravi Teja

但是,如果文件包含在函数内部,则变量仅是该函数的局部作用域的一部分。

myname.php

<?php
   $color = 'green';
   $fruit = 'apple';
?>

test.php

<?php
   function showname() {
      include "myname.php";
   }
   echo "<h2>$fname $lname</h2>";
?>

现在,当浏览器访问https://127.0.0.1/test.php时,它显示未定义变量警告:

Warning: Undefined variable $fname in C:\xampp\htdocs\test.php on line 7
Warning: Undefined variable $lname in C:\xampp\htdocs\test.php on line 7

include_once 语句

就像include一样,PHP 也有“include_once”关键字。唯一的区别是,如果某个文件中的代码已经被包含,则它将不再被包含,并且“include_once”返回 true。顾名思义,该文件将只包含一次。

“include_once”可用于在脚本的特定执行过程中可能多次包含和评估同一文件的情况,因此它可以帮助避免诸如函数重新定义、变量值重新赋值等问题。

PHP – Include 与 Require

PHP 中的require关键字与include关键字非常相似。两者之间的区别在于,在失败时,require将产生一个致命错误(E_COMPILE_ERROR 级别)。

换句话说,require将停止脚本,而 include 仅发出警告(E_WARNING),这允许脚本继续执行。

require_once 关键字

“require_once”关键字类似于require,但有一个细微的差别。如果您使用“require_once”,则 PHP 将检查文件是否已被包含,如果是,则不会再次包含相同的文件。

广告