包含文件在 PHP 手册中是属于流程控制中的内容,它一共包括 include、include_once、require、require_once 等几个语法。
包含文件的主要作用就是能够在一个 PHP 文件中调用另一个 PHP 文件中的类。
include 与 include_once
代码 1(就是上一节《魔术方法》中的内容),保存文件名为 class.php:
class name{
public $s1 = 0;
public $s2 = 1;
public function __construct( $a, $b ){
$this->s1 = $a;
$this->s2 = $b;
}
public function s1(){
$this->s2();
}
public function s2(){
echo $this->s1;
}
}
$name = new name( 'a', 'b' );
$name->s1();
?>
代码 2,保存文件名为 text.php:
include('class.php');
var_dump( new name(1,2) );
?>
注意这里我们需要把两个文件保存在同一个目录下(以后我们会讲如果不在同一个目录该怎么调用)。
浏览器输出:
其实这跟 HTML 中如何引用外部的 CSS 或 JS 文件有点类似。
我们也可以理解为就是引用外部的 PHP 文件。
include_once 跟 include 唯一的区别就是 include 不能重复重复加载。
once 的意思就是一次,表示无论加载多少次都只会执行一次。如:
include_once('class.php');
include_once('class.php');
include_once('class.php');
var_dump( new name(1,2) );
?>它在浏览器输出的结果跟上面是一样的。
而 include 如果重复加载多次就会报错。
require 与 require_once
require 和 include 几乎完全一样,除了处理失败的方式不同之外。
require 在出错时产生 E_COMPILE_ERROR 级别的错误。换句话说 include 如果发现错误只产生警告(E_WARNING),脚本会继续执行。
而 require 如果发现错误,后续的代码(脚本)将不再执行。
require('class1.php');
echo 123;
exit;//这个是用来截停的,其实如果不加的话在这里的效果还是一样的
var_dump( new name(1,2) );
?>
PS:上面的 class.php 中间加了个 1 变成了 class1.php。也就是说这个文件名是不存在的。
浏览器输出:
可以看到浏览器报错了,而且没有再输出任何值。
可是如果换成 include 的话:
include('class1.php');
echo 123;
exit;
var_dump( new name(1,2) );
?>
浏览器虽然也报错了,还还是会输出:
所以,其实我们只需要用到 include 一种语法就可以了。
其它几种语法几乎可以算是多余的。This is not the end.It is not even the beginning of the end.But it is,perhaps,the end of the beginning.
更多分享三小时学会 HTML 网页编辑