包含文件在 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 网页编辑
三小时学会 CSS 网页美化
PHP 网站开发
效率工具
小众电影
小程序开发
领取专属 10元无门槛券
私享最新 技术干货