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() 类似,使用方法也一样。唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。这两个语句应该用于在脚本执行期间,同一个文件有可能被包括超过一次的情况下,确保它只被包括一次,以避免函数重定义以及变量重新赋值等问题。

参考

posted @ 2020-08-22 22:04  Yogile  阅读(269)  评论(0编辑  收藏  举报