zoukankan      html  css  js  c++  java
  • 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:AmberLanguageProgramWebstorm202007ideastawebhtml	est
      equire.php on line 2
      
          Warning: include(): Failed opening 'no.php' for inclusion (include_path='.;C:phppear') in C:AmberLanguageProgramWebstorm202007ideastawebhtml	est
      equire.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:AmberLanguageProgramWebstorm202007ideastawebhtml	est
        equire.php on line 2
        
        Fatal error: require(): Failed opening required 'no.php' (include_path='.;C:phppear') in C:AmberLanguageProgramWebstorm202007ideastawebhtml	est
        equire.php on line 2
        

    require_once、include_once

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

    参考

  • 相关阅读:
    连接Oracle时报错ORA-12541: TNS: 无监听程序
    DevExpress中的GridControl控件设置了列Readonly后,想双击弹出明细的实现
    根据现有的XML文件生成其对应的实体类
    SQL Server Profiler的简单使用
    给视图增加索引,提高多表关联数据查询效率
    您对无法重新创建的表进行了更改或者启用了“阻止保存要求重新创建表的更改”选项
    卸载win10内置的onenote
    XmlSerializer 实现序列化CDATA
    sqlserver数据库不能重命名报错5030
    智力题
  • 原文地址:https://www.cnblogs.com/Yogile/p/13547386.html
Copyright © 2011-2022 走看看