PHP require(),include(),require_once()和include_once()之间的区别

看到网上关于require和include如何选择,亲测并总结了一下:

1. _once 后缀表示不会重复加载。

2. 报错:

  • include引入文件的时候,如果碰到错误,则会抛出提示,并继续运行下边的代码(Warning);
  • require引入文件的时候,如果碰到错误,则会抛出提示,并停止运行下边的代码(Fatal error);

3. 实践:

require - 包含函数和变量。通常放在程序的最开始,PHP 程序在执行前,就会先读入 require 所指定引入的文件,成为网页的一部份。
include - 通常放在流程控制的处理部分来简化流程。PHP 程序网页在读到 include 的文件时,才将它读进来。

4. 在 PHP 4.0.2 之前适用以下规则:

require() 总是会尝试读取目标文件,即使它所在的行根本就不会执行。条件语句不会影响 require()。不过如果 require() 所在的行没有执行,则目标文件中的代码也不会执行。同样,循环结构也不影响 require() 的行为。尽管目标文件中包含的代码仍然是循环的主体,但 require() 本身只会运行一次。 

5. 返回值:

虽然include()和require()成功引用后都会返回1,但是鉴于require()一旦引用失败就会fatal,那么也就只有$ret = include(‘foobar.php‘)去判断$ret才会有实际意义。

PHP require(),include(),require_once()和include_once()之间的区别

时间: 2024-10-09 13:17:11

PHP require(),include(),require_once()和include_once()之间的区别的相关文章

require(),include(),require_once()和include_once()之间的区别

require(),include(),require_once()和include_once()之间的区别 引用文件的方法有两种:require 及 include. require 的使用方法如 require("file.php"); .这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份.常用的函数,亦可以这个方法将它引入网页中. include 使用方法如 include("f

require(),include(),require_once()和include_once()区别

require 的使用方法如 require("MyRequireFile.php"); .这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份.常用的函数,亦可以这个方法将它引入网页中. include 使用方法如 include("MyIncludeFile.php"); .这个函数一般是放在流程控制的处理部分中.PHP 程序网页在读到 include 的文件时,才将它读进

深入理解require/include的顺序

在大型的Web项目中, include_path是一个模块化设计的根本中的根本(当然,现在也有很多基于autoload的设计, 这个不影响本文的探讨), 但是正是因为include_path, 经常会让我们遇到一些因为没有找到正确的文件而导致的看似”诡异”的问题. 也就有了如下的疑问: include_path是怎么起作用的? 如果有多个include_path顺序是怎么样的? 什么情况下include_path不起作用? 今天, 我就全面的介绍下这个问题, 先从一个例子开始吧. 如下的目录结构

[转]iOS NSInteger/NSUInteger与int/unsigned int、long/unsigned long之间的区别

在iOS开发中经常使用NSInteger和NSUInteger,而在其他的类似于C++的语言中,我们经常使用的是int.unsigned int.我们知道iOS也可以使用g++编译器,那么它们之间是否有什么联系呢? 从NSUInteger和NSInteger的定义文件中 NSObjCRuntime.h发现有这样的语句: #if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUI

cin与getchar、scanf之间的区别

cin会忽略空格和回车 getchar与scanf不会忽略回车和空格 // exam1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; int main(void) { char ch; ch=getchar(); printf("%d\n",ch); cin>>ch; printf("%d\n",ch

4.关于QT中的QFile文件操作,QBuffer,Label上添加QPixmap,QByteArray和QString之间的区别,QTextStream和QDataStream的区别,QT内存映射(

 新建项目13IO 13IO.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gui widgets network CONFIG += C++11 MyWidget.h #ifndef MYWIDGET_H #define MYWIDGET_H   #include <QWidget>   class MyWidget : public QWidget {     Q_OBJECT public:     expli

iOS 中 #import同@class之间的区别

很多刚开始学习iOS开发的同学可能在看别人的代码的时候会发现有部分#import操作写在m文件中,而h文件仅仅使用@class进行声明,不禁纳闷起来,为什么不直接把#import放到h文件中呢? 这是因为h文件在修改后,所有import该h文件的所有文件必须重 新build,因此,如果把#import写在h文件中,import该h文件的文件也就会产生不必要的编译,增加编译时间,特别是在项目文件多的情况 下.想象一下,如果只是修改一个h文件而导致上百个文件不必要的编译,那是一件多么让人纠结的事情.

#include #import @class 的一些用法区别

从网上查了一些资料,整理了一下,发现很多都说的比较详尽,下面摘录自网络 说一下#import同class之间的区别 在ios中我们经常会在.h和.m中引入一些类啊等等一般用的是#import来进行声明,你们可能也见到在.h文件进用@class来声明的,那么#import和@class进行声明 到底有什么的区别呢? 1. import会包含这个类的所有信息,包括实体变量和方法,而@class只告诉编译器,声明的类的名称,至于这些类是如何定义的,暂时不用考虑,所以在头文件中如果用@class声明某个

iOS NSInteger/NSUInteger与int/unsigned int、long/unsigned long之间的区别!

在iOS开发中经常使用NSInteger和NSUInteger,而在其他的类似于C++的语言中,我们经常使用的是int.unsigned int.我们知道iOS也可以使用g++编译器,那么它们之间是否有什么联系呢? 从NSUInteger和NSInteger的定义文件中 NSObjCRuntime.h发现有这样的语句: 1 #if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_B