PHP 引用文件
前言
本文简记 PHP 引用文件的方式。
三者加载方式
- incluce 在用到时加载。
- require 在一开始就加载。
- _once 后缀表示已加载的不加载。
require、include区别
require() 和 include() 语句是语言结构,不是真正的函数,可以像 php 中其他的语言结构一样,例如 echo() 可以使用 echo("ab") 形式,也可以使用 echo "abc" 形式输出字符串 abc。require() 和 include() 语句也可以不加圆括号而直接加参数。
文件引用方式
- 对 include() 语句来说,在执行文件时每次都要进行读取和评估;
而对于 require() 来说,文件只处理一次(实际上,文件内容替换 require() 语句)。这就意味着如果可能执行多次的代码,则使用 require() 效率比较高。 - 另外一方面,如果每次执行代码时是读取不同的文件,或者有通过一组文件迭代的循环,就使用 include() 语句。
报错
-
include 引入文件的时候,如果碰到错误,会给出提示,并继续运行下边的代码。
require 引入文件的时候,如果碰到错误,会给出提示,并停止运行下边的代码。
-
PHP 系统在加载PHP程序时有一个伪编译过程,可使程序运行速度加快。但 incluce 的文档仍为解释执行。include 的文件中出错了,主程序继续往下执行,require 的文件出错了,主程序也停了,所以包含的文件出错对系统影响不大的话(如界面文件)就用 include,否则用 require。
-
示例:
对不存在的 PHP 文件
no.php
进行引用。-
include
复制
<?php include "no.php"; echo 123;
浏览器访问显示:
复制
Warning: include(no.php): failed to open stream: No such file or directory in C:\Amber\LanguageProgram\Webstorm\202007\ideastaweb\html\test\require.php on line 2 Warning: include(): Failed opening 'no.php' for inclusion (include_path='.;C:\php\pear') in C:\Amber\LanguageProgram\Webstorm\202007\ideastaweb\html\test\require.php on line 2 123
-
require
复制
<?php require "no.php"; echo 123;
浏览器访问显示:
复制
Warning: require(no.php): failed to open stream: No such file or directory in C:\Amber\LanguageProgram\Webstorm\202007\ideastaweb\html\test\require.php on line 2 Fatal error: require(): Failed opening required 'no.php' (include_path='.;C:\php\pear') in C:\Amber\LanguageProgram\Webstorm\202007\ideastaweb\html\test\require.php on line 2
-
require_once、include_once
- include_once() 和 require_once() 语句也是在脚本执行期间包括运行指定文件。此行为和 include() 语句及 require() 类似,使用方法也一样。唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。这两个语句应该用于在脚本执行期间,同一个文件有可能被包括超过一次的情况下,确保它只被包括一次,以避免函数重定义以及变量重新赋值等问题。
参考
作者:Yogile
出处:https://www.cnblogs.com/Yogile/p/13547386.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构