前言

函数自定义库并不是定义函数的PHP语法,而是编程时的一种设计模式,或者说是编码技巧。函数是结构化程序设计的模块,是实现代码可重用性的核心。为了更好的组织代码,是自定义的函数可以在同一个项目的多个文件中使用,通常将多个自定义的函数组织到同一个文件或多个文件中。这些收集函数定义的文件就是创建的PHP函数库。如果在PHP脚本中想使用这些文件中定义的函数,就需要使用include()、include_once()、require()、require_once()中的其中一个函数,将函数库中文件载入或引入脚本程序中。

require()语句的性能与include()类似,都是包括并运行指定文件。不同之处在于,对include()语句来说,在执行文件时每次都要进行读取和评估;而对于require()语句来说,文件只处理一次(实际上,文件内容替换了require()语句)。这就意味着如果可能执行多次的代码,则使用require()效率比较高。另外,如果每次执行代码时读取不同的文件,或者通过一组文件迭代的循环,就使用include()语句。

include()和require()的使用及区别

require() 语句的使用方法如 require(" myfile.php ") , 这条语句通常放在 php脚本程序的最前面。PHP程序在执行前就会先读入require()语句所引入的文件,使它 变成PHP脚本文件的一部分。include()语句的使用方法和 require() 语句是一样的,如 include(" myfile.php ")。而这条语句一般放在流程控制的处理的代码区段中。php脚本文件在读到 include() 语句,才会将它包含的文件读进来。采用这种方式,可以把程序执行时的流程简单化。

我们通过代码简单了解一下:

<?php
 require "config.php";      //使用 require 语句包含执行 config.php文件
 include "configs.php";      //使用 require 语句包含执行 config.php文件
 if($condition){
   include "myfiles.txt";      //使用include 语句包含并执行 myfiles.txt文件
 }else{
   include ("others.php");   // 使用include 语句包含并执行 others.php文件
 }
 require("somefiles.txt");   // 使用require 语句包含执行 somefiles.php文件
?>

上面的文件我们都没有定义,只是演示而已,执行结果如下:

【web 开发基础】PHP使用自定义函数库_自定义

接着我们把第一行注释掉

<?php
 //require "config.php";      //使用 require 语句包含执行 config.php文件
 include "configs.php";      //使用 require 语句包含执行 config.php文件
 if($condition){
   include "myfiles.txt";      //使用include 语句包含并执行 myfiles.txt文件
 }else{
   include ("others.php");   // 使用include 语句包含并执行 others.php文件
 }
 require("somefiles.txt");   // 使用require 语句包含执行 somefiles.php文件
?>

执行结果如下:

【web 开发基础】PHP使用自定义函数库_自定义_02

总结

这两个引入方法的用途是完全一样的,不一定非得哪个放在最前面哪个放在中间。他们最根本的区别在于错误处理的方式不一样。从上面的例子的运行结果对比可以看出:

require() :如果文件不存在,会报出一个fatal error.脚本停止执行

include() : 如果文件不存在,会给出一个 warning,但脚本会继续执行

上面的例子中,在一个脚本文件中使用了require()和include()两种语句,include()语句放在流程控制的出路区段中使用,当PHP脚本文件读到它时,才将它包含的文件读进来。而在文件的开头和结尾处使用require()语句,在这个脚本执行前,就会先读入它所引入的文件,使它包含的文件成为PHP脚本文件的一部分。

require()和include()语句是语言结构,不是真正的函数,可以像PHP中其他的语言结构一样,比如:echo()可以使用echo("123")形式,也可以使用echo “123”形式输出字符串123。require()和include()语句也可以不加圆括号而直接加参数,再比如include()语句可以使用include("file.php")包含file.php文件,也可以使用include "file.php";的形式。

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