2014-09-05
对于php的文件调用,我们有时会为使用include, include_once, require, require_once而陷入斟酌,不仅初学者如此,高级工程是由也会有纠结的时候。而且至今使用哪一个为最优仍没有达成共识。每个团队每个项目有自己的代码规范,也有自己的使用理由。至于四个函数的异同,在此不作赘述。
我们团队推崇使用的是require_once,为什么使用require_once而不是require呢。今日给出一个理由。
require的使用在多个子类继承同一个父类时会引起redeclare的错误
因为require不是一个方法,而是一个语句块。所以,他把把引用的文件执行一遍,所以,如果你在一个文件里引用了两个继承自同一父类的类时,由会引起上述问题。而require_once则不会,它会先判断是否引用过,苦有则略过。
看代码,先写一个抽象父类:
[php]
AbstractClass.php
AbstractClass.php<?phpabstract class AbstractClass{}
再实现两个子类:
[php]
RequireClassA.php
<?php
//使用require而不是require_once
require 'AbstractClass.php';
class RequireClassA extends AbstractClass{
}
RequireClassA.php
<?php
//使用require而不是require_once
require 'AbstractClass.php';
class RequireClassA extends AbstractClass{
}
[php]
RequireClassB.php
<?php
//使用require而不是require_once
require 'AbstractClass.php';class RequireClassB extends AbstractClass{}
RequireClassB.php
<?php
//使用require而不是require_once
require 'AbstractClass.php';class RequireClassB extends AbstractClass{}
实现调用:
[php]
test.php
<?php
require_once 'RequireClassB.php';
require_once 'RequireClassA.php';
$A = new RequireClassA();
$B = new RequireClassB();
test.php
<?php
require_once 'RequireClassB.php';
require_once 'RequireClassA.php';
$A = new RequireClassA();
$B = new RequireClassB();
运行test.php报错
[plain]
>php test.php
>PHP Fatal error: Cannot redeclare class AbstractClass in /home/john/workspace/php/require/AbstractClass.php on line 2
>php test.php
>PHP Fatal error: Cannot redeclare class AbstractClass in /home/john/workspace/php/require/AbstractClass.php on line 2
1
CI框架连接数据库配置操作以及多数据库操作
09-05
2
asp 简单读取数据表并列出来 ASP如何快速从数据库读取大量数据
05-17
3
C语言关键字及其解释介绍 C语言32个关键字详解
04-05
4
C语言中sizeof是什么意思 c语言里sizeof怎样用法详解
04-26
5
PHP中的魔术方法 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep,
09-05
6
将视频设置为Android手机开机动画的教程
12-11
7
PHP中的(++i)前缀自增 和 (i++)后缀自增
09-05
8
最简单的asp登陆界面代码 asp登陆界面源代码详细介绍
04-12
常用dos命令及语法
2014-09-27
PHP中include和require区别之我见
2014-09-05
如何安装PHPstorm并配置方法教程 phpstorm安装后要进行哪些配置
2017-05-03
php递归返回值的问题
2014-09-05
单片机编程好学吗?单片机初学者怎样看懂代码
2022-03-21
PHP 教程之如何使用BLOB存取图片信息实例
2014-09-05
学ug编程如何快速入门?
2022-03-17
PHP数组函数array
2014-09-05
学习使用C语言/C++编程的7个步骤!超赞~
2022-03-20
零基础的初学者怎样学习java,或者应该先学什么?
2022-03-21
热血巷战手机版下载v1.1.1.107 安卓版
其它手游 65MB
下载
街头斗士功夫进攻5最新版下载v1.1.1.107 安卓版
其它手游 65MB
下载
点击忍者大师游戏(tap ninja)下载v7.1.9 安卓版
其它手游 77.74MB
下载
tap ninja游戏下载v7.1.9 安卓版
其它手游 77.74MB
下载
德雷姆代尔手机版下载v2.7.0 安卓正式版
其它手游 187.16MB
下载
火柴人龙影战士中文版下载v2.0.0 安卓版
其它手游 101.44MB
下载
火柴人战士暗影龙珠格斗游戏下载v2.0.0 安卓版
其它手游 101.44MB
下载
火柴人勇士超级龙影搏斗最新版下载v2.0.0 安卓版
其它手游 101.44MB
下载安洁拉世界奇幻之旅游戏下载v2.9 安卓版
下载
坦克沙盒游戏手机版(坦克物理模拟)下载v9.0 安卓版
下载
太空人抽卡对决手机版下载v1.6 安卓版
下载
棕熊露营旅行游戏下载v1.1.0 安卓版
下载
回家的猫游戏下载v2.5.18 安卓版
下载
蜗牛鲍勃3游戏(snail bob 3)下载v1.0.34 安卓版
下载
snail bob3最新版下载v1.0.34 安卓版
下载
西梅小说手机版v1.0
下载