【问题标题】:Fatal Undefined Function Error with included files in PHPPHP中包含文件的致命未定义函数错误
【发布时间】:2021-07-05 16:58:16
【问题描述】:

这是 PHP 手册中的声明:

当一个文件被包含时,它包含的代码会继承该变量 包含发生的行的范围。任何可用的变量 在调用文件中的该行将在被调用中可用 文件,从那时起。但是,所有函数和类 在包含文件中定义的具有全局范围。

我有一个名为 inc.php 的文件,其函数定义如下:

function echo_name($name) {
  echo $name;
}

另一个名为 main.php 的文件具有以下代码(版本 1):

// This call throws an error
echo_name('Amanda');

require_once("inc.php");

// This call works
echo_name('James');

如果不使用require_once,我直接把函数所有调用工作(版本2):

// This call works
echo_name('Amanda');

function echo_name($name) {
  echo $name;
}

// This call works
echo_name('James');

PHP手册是什么意思

包含文件中定义的所有函数和类都具有全局范围。

当版本 1 中的代码失败但版本 2 有效时?

谢谢。

【问题讨论】:

    标签: php function scope


    【解决方案1】:

    PHP 是一种解释性语言,意味着(删除所有当前不需要的细节)PHP 将主要逐行解释您的代码。 函数、类声明在实际代码执行之前(在预编译阶段)被解释,但 require 和 include 指令只有在它们真正在代码中调用时才会执行。

    在您的第一个示例中, echo_name 函数不会在 require 语句之前声明,这就是您收到此错误的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 2014-07-21
      • 2016-07-02
      相关资源
      最近更新 更多