美文网首页PHP很简单
PHP强化之21 - include与require

PHP强化之21 - include与require

作者: 四月不见 | 来源:发表于2019-01-05 17:00 被阅读0次

    一、简介

    include和require都是引入指定的文件。_once表示只引入一次,即之前已经引入过的不再引入。

    引用原理:

    被包含文件先按参数给出的路径寻找,如果没有给出目录(只有文件名)时则按照 include_path 指定的目录寻找。如果在 include_path 下没找到该文件则 include 最后才在调用脚本文件所在的目录和当前工作目录下寻找。如果最后仍未找到文件则 include 结构会发出一条警告;这一点和 require 不同,后者会发出一个致命错误。

    如果定义了路径——不管是绝对路径(在 Windows 下以盘符或者 \ 开头,在 Unix/Linux 下以 / 开头)还是当前目录的相对路径(以 . 或者 .. 开头)——include_path 都会被完全忽略。例如一个文件以 ../ 开头,则解析器会在当前目录的父目录下寻找该文件。

    二、区别

    1、加载失败的处理方式不同

    include在引入不存文件时产生一个警告(E_WARNING级别)且脚本还会继续执行;require则会导致一个致命性错误(E_COMPILE_ERROR级别)且脚本停止执行。

    include 'hello.php';
    echo 'world'; // 如果hello.php不存在,echo 'world'这句是可以继续执行的。
    
    require 'hello.php';
    echo 'world'; //如果hello.php不存在,echo 'hello'这句是不会执行的,到require时就停止了。
    

    2、include()是有条件包含函数,而 require()则是无条件包含函数。

    if(FALSE){
    include 'file.php'; //file.php不会被引入
    }
    
    if(FALSE){
    require 'file.php'; //file.php将会被引入
    }
    

    3、include有返回值,而require没有

    在失败时 include 返回 FALSE 并且发出警告。成功的包含则返回 1,除非在包含文件中另外给出了返回值。

    4、文件引用方式

    include()执行时需要引用的文件每次都要进行读取和评估;
    require()执行时需要引用的文件只处理一次(实际上执行时需要引用的文件内容替换了require()语句)

    require通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。

    include一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。

    三、注意

    1、关于include和require后面是否加括号的问题

    理论上来说:include和require后面加不加括号对执行结果没有区别,但是加上括号效率较低,所以后面能不加括号就不加括号。

    2、关于_once

    require(include) / require_once(include_once)唯一的区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。

    参考

    1、require:http://php.net/manual/zh/function.require.php
    2、include:http://php.net/manual/zh/function.include.php
    3、require_once:http://php.net/manual/zh/function.require-once.php
    4、include_once:http://php.net/manual/zh/function.include-once.php

    相关文章

      网友评论

        本文标题:PHP强化之21 - include与require

        本文链接:https://www.haomeiwen.com/subject/qslxhqtx.html