首頁 後端開發 php教程 php require 在类的继承中的坑_PHP教程

php require 在类的继承中的坑_PHP教程

Jul 14, 2016 am 10:10 AM
include php require 使用 我們 文件 類別 繼承 呼叫

 对于php的文件调用,我们有时会为使用include, include_once, require, require_once而陷入斟酌,不仅初学者如此,高级工程是由也会有纠结的时候。而且至今使用哪一个为最优仍没有达成共识。每个团队每个项目有自己的代码规范,也有自己的使用理由。至于四个函数的异同,在此不作赘述。

  我们团队推崇使用的是require_once,为什么使用require_once而不是require呢。今日给出一个理由。

   require的使用在多个子类继承同一个父类时会引起redeclare的错误

 因为require不是一个方法,而是一个语句块。所以,他把把引用的文件执行一遍,所以,如果你在一个文件里引用了两个继承自同一父类的类时,由会引起上述问题。而require_once则不会,它会先判断是否引用过,苦有则略过。

  看代码,先写一个抽象父类:


[php]
AbstractClass.php 

AbstractClass.php

  再实现两个子类:


[php]
RequireClassA.php 
 
//使用require而不是require_once  
require 'AbstractClass.php'; 
class RequireClassA extends AbstractClass{ 
 

RequireClassA.php

//使用require而不是require_once
require 'AbstractClass.php';
class RequireClassA extends AbstractClass{

}

 

 

[php]
RequireClassB.php 
 
//使用require而不是require_once  
require 'AbstractClass.php';class RequireClassB extends AbstractClass{} 

RequireClassB.php

//使用require而不是require_once
require 'AbstractClass.php';class RequireClassB extends AbstractClass{}


  实现调用:

 

[php]
test.php 
 
require_once 'RequireClassB.php'; 
require_once 'RequireClassA.php'; 
$A = new RequireClassA(); 
$B = new RequireClassB(); 

test.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

 

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/477515.htmlTechArticle对于php的文件调用,我们有时会为使用include, include_once, require, require_once而陷入斟酌,不仅初学者如此,高级工程是由也会有纠结的时候。...
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南

CakePHP 日期和時間 CakePHP 日期和時間 Sep 10, 2024 pm 05:27 PM

CakePHP 日期和時間

CakePHP 專案配置 CakePHP 專案配置 Sep 10, 2024 pm 05:25 PM

CakePHP 專案配置

CakePHP 檔案上傳 CakePHP 檔案上傳 Sep 10, 2024 pm 05:27 PM

CakePHP 檔案上傳

CakePHP 路由 CakePHP 路由 Sep 10, 2024 pm 05:25 PM

CakePHP 路由

討論 CakePHP 討論 CakePHP Sep 10, 2024 pm 05:28 PM

討論 CakePHP

CakePHP 快速指南 CakePHP 快速指南 Sep 10, 2024 pm 05:27 PM

CakePHP 快速指南

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發

See all articles