ホームページ  >  記事  >  バックエンド開発  >  クラス継承におけるphp requireの落とし穴_PHPチュートリアル

クラス継承におけるphp requireの落とし穴_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-14 10:10:23971ブラウズ

PHP ファイル呼び出しの場合、include、include_once、require、require_once の使用について心配する必要があることがあります。これは初心者だけでなく、高度なプロジェクトにも当てはまります。そして、どれを使用するのが最適であるかについてはまだコンセンサスがありません。各チームと各プロジェクトには独自のコーディング標準があり、それを使用する独自の理由があります。 4 つの機能の類似点と相違点については、ここでは詳しく説明しません。

私たちのチームは、require_once を使用することを推奨しています。今日は理由を述べてください。

複数のサブクラスが同じ親クラスを継承する場合、require を使用すると再宣言エラーが発生します

require はメソッドではなくステートメントブロックであるためです。したがって、参照されたファイルは 1 回実行されるため、同じ親クラスを継承する 2 つのクラスを 1 つのファイル内で参照すると、上記の問題が発生します。しかし、require_once はそうではありません。まず参照されているかどうかを判断し、参照されている場合はスキップします。

コードを見て、まず抽象親クラスを書きます:


[php]
AbstractClass.php

AbstractClass.php

さらに 2 つのサブクラスを実装します:


[php]
RequireClassA.php

//require_once の代わりに require を使用します
'AbstractClass.php' が必要です。 クラス RequireClassA は AbstractClass を拡張します{

}

RequireClassA.php

//require_once の代わりに require を使用します
'AbstractClass.php' が必要です;
クラス RequireClassA は AbstractClass を拡張します{

}

[php]

RequireClassB.php

//require_once の代わりに require を使用します
require 'AbstractClass.php';class RequireClassB extends AbstractClass{}

RequireClassB.php

//require_once の代わりに require を使用します
require 'AbstractClass.php';class RequireClassB extends AbstractClass{}

実装呼び出し:

[php]

テスト.php

require_once 'RequireClassB.php'; require_once 'RequireClassA.php'; $A = 新しい RequireClassA(); $B = 新しい RequireClassB();
test.php

require_once 'RequireClassB.php';

require_once 'RequireClassA.php';

$A = 新しい RequireClassA();

$B = 新しい RequireClassB();





test.php 実行時のエラー

【プレーン】

>php test.php

>PHP 致命的エラー: /home/john/workspace/php/require/AbstractClass.php の 2 行目でクラス AbstractClass を再宣言できません

>php test.php
>PHP 致命的エラー: /home/john/workspace/php/require/AbstractClass.php の 2 行目でクラス AbstractClass を再宣言できません


http://www.bkjia.com/PHPjc/477515.html

www.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/477515.html技術記事 PHP ファイル呼び出しでは、include、include_once、require、require_once の使用について考慮する必要がある場合があります。これは初心者だけでなく、高度なプロジェクトにも当てはまります。 ...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。