4

、、の中includeinclude_once、私はいつもただ使用しrequireます。多くのサードパーティフレームワークも同様に使用します。require_oncerequire_oncerequire_once

別の構成を使用する必要があるという実際のシナリオを誰かが説明できますか?

4

3 に答える 3

5

IMHO there is no real scenario that fits include and include_once because of two reasons:

  1. It's highly unlikely that your intention is to include a file and at the same time you don't really care if it's included (e.g. if the file does not exist and execution continues).
  2. Even if that is the case, include will emit a warning which is bad style (zero-warning code is a good thing to strive for). You can prevent this most of the time with a check like is_file, but then you know that the file does exist so why not require it?

For require vs require_once: if a file can legitimately be parsed more than once (e.g. an HTML template) use the former. If it brings code inside your application (the vast majority of cases) use the latter.

于 2012-11-13T12:19:28.563 に答える
2

The require_once()ステートメントは、require()PHPがファイルがすでにインクルードされているかどうかをチェックし、インクルードされている場合は再度インクルード(必須)しないことを除いて、同じです。

require()関数は、エラーの処理方法が異なることを除いて、と同じですinclude()。エラーが発生した場合、include()関数は警告を生成しますが、スクリプトは実行を継続します。はrequire()致命的なエラーを生成し、スクリプトは停止します。

include/requireandステートメントの唯一の違いはinclude_once/require_once、特定のファイルが実際にロードされる回数です。ステートメントを使用する場合include_once/require_once、ファイルを複数回ロードまたは実行することはできません。これらの2つの方法のいずれかを使用してファイルを2回ロードしようとすると、そのファイルは無視されます。スクリプト内で同じ関数を複数回定義することは許可されていないため、これらの関数を使用すると、開発者は、スクリプトが以前にロードされているかどうかを確認しなくても、必要に応じてスクリプトを含めることができます。

<?php

    include ('library.inc');      
    $leap = is_leapyear(2003);
 

    require ('library.inc');     
    $leap = is_leapyear(2003);

?>

両方のステートメントで現在のスクリプトが別のファイルでコードを実行できる場合、2つの違いは何ですか?

2つの大きな違いがあります。

1つは値を返す機能で、もう1つは要求されたファイルがロードされる状況です。ステートメントが使用されると、PHPは、スクリプトがステートメントを実行するポイントに到達し、ステートメントをファイルの内容に置き換えるincludeまで、要求されたファイルの実際のロードを遅らせます。逆に、ステートメントの場合、ステートメント(したがってファイルの内容)がスクリプトの通常の進行で実行されたかどうかに関係なく、ステートメントは要求されたファイルの内容に置き換えられます。includeincluderequirerequirerequire

上記の段落からの引用http://82.157.70.109/mirrorbooks/php5/067232511X/ch01lev1sec8.html

ノート

The capability to return values from external files is limited only to the include and include_once statements. The require and require_once statements cannot be used in this fashion.

require give Fatal error but include give Warning

于 2012-11-13T12:07:56.603 に答える
-1

include構文は、ファイルが見つからない場合に警告を発します。これは、致命的なレベルのエラー を発行するrequireとは異なる動作です。E_COMPILE_ERROR

include_once同じ違いがとにも当てはまりますrequire_once

includeを使用する場合とrequireを使用する場合、 require、include、require_onceの違いに対する回答で非常によく説明されていますか?

私の観点からすると、2つのことがあります。

  1. アプリケーションに絶対に存在する必要がある何かがある場合は、require/を使用require_onceしてそのような定義を含める必要があります。そうすれば、警告の代わりに致命的なエラーが発生し、開発中に問題のあるコードを簡単に見つけることができます。
  2. 外部リソースまたは欠落している可能性のあるものを含める場合は、演算子を使用してインクルードエラーの可能性を抑制できるように、 include/に含める必要があります。include_once@
于 2012-11-13T12:12:40.670 に答える