include 进来的函数直接进入当前作用域,可立即调用;需确保路径正确、避免重复包含、include 语句位于调用前,并用 function_exists() 检查定义。

include 进来的文件里定义的函数,和当前文件写的一样用
PHP 的 include(以及 require)不是“隔离作用域”的操作,它只是把目标文件的内容原样插入到当前执行位置。所以只要 include 语句执行成功、且被包含文件里确实用 function 声明了函数,那这个函数就直接进入当前作用域,可以立刻调用。
常见错误现象:
- 调用时报
Call to undefined function—— 很可能include根本没执行(比如路径错、文件不存在、条件没满足),或者函数定义在某个if分支里但条件为假 - 函数名冲突报
Cannot redeclare—— 多次include同一个定义函数的文件(应该改用include_once或require_once)
必须确保 include 语句在函数调用之前执行
PHP 是顺序执行的。include 是运行时行为,不是编译期加载。如果把 include 写在函数调用之后,那调用时函数还没被定义。
正确做法:
-
include放在所有调用该函数的代码之前(通常放在文件顶部) - 不要把它塞进某个条件块或函数体内部,除非你明确知道执行顺序
- 可以用
var_dump(function_exists('your_function_name'));在调用前检查是否已定义
示例:
<?php include 'helpers.php'; // helpers.php 里有 function format_date($ts) { ... }
echo format_date(time()); // ✅ 可以调用
?>
被包含文件里的函数能访问当前文件的变量吗?
不能直接访问,除非显式传参、用 global 或 $GLOBALS —— 这和作用域规则有关,和 include 无关。很多人误以为 “include 进来就等于写在一起”,其实变量作用域仍受函数/块级限制。
容易踩的坑:
- 在
helpers.php的函数里直接写echo $config['host'];,但$config是在主文件里定义的数组 → 报Undefined variable - 试图在被包含文件中用
__FILE__或__DIR__获取“主文件路径” → 实际返回的是被包含文件自身的路径
如果真需要共享配置,建议:把配置提前 include,或封装成函数/类,或通过参数传递。
require_once 比 include 更适合放函数定义文件
函数定义类的文件(比如 functions.php)一旦被重复包含,就会触发 Cannot redeclare 致命错误。而 include 和 require 都不防重载。
所以实际项目中应优先用:
-
require_once 'functions.php';—— 路径错就报错终止,且只加载一次 - 避免混用
include和require_once加载同一文件(行为不可控) - 注意大小写和路径分隔符:Windows 下
Functions.php和functions.php可能被当成不同文件,Linux 下则严格区分
最常被忽略的一点:include 返回值是被包含文件的执行结果(最后一行表达式的值),但函数定义语句本身没有返回值,所以别指望靠 $res = include 'xxx.php'; 来判断函数是否加载成功 —— 它可能返回 1(成功)也可能返回 false(失败),但更可靠的方式永远是 function_exists() 或捕获 include 的返回值并检查是否为 false。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











