3

PHPには、次のものがあります。

<?php include 'external_file.php'; ?>

一方、Javaでは、次のようなインポートがあります。

import javax.servlet.http.HttpServlet;

PHPのインクルードは、外部ファイルの内容をincludeステートメントを含むファイルにダンプするだけであると私は理解しています。

私の直感では、Javaはこれらのインクルード/インポートをPHPとは異なる方法で処理します。主な違いは何ですか?

4

7 に答える 7

3

PHPのインクルードは、include()ディレクティブがあるポイントでインクルードされたファイルの生のコンテンツを文字通りカット/ペーストしたのとほとんど同じです。

Javaはコンパイルされているため、「含める」ソースコードはありません。JVMは単にオブジェクト/クラス定義をロードして使用できるようにしているだけです。これは、Cのディレクティブによく似てい#includeます。リテラルのソースコードをロードするのではなく、後で使用するための関数定義/プロトタイプ/フィンガープリントだけをロードします。

于 2012-07-09T19:40:46.393 に答える
1

PHPでは、ファイルの内容を現在のファイルにダンプするだけです。Javaでは、インポートされたクラスが使用されます。

  1. インポートされたクラスを使用してソースをバイトコードにコンパイルします。
  2. 実行時に、JVMは、プログラムがインポートされたクラスを参照していることを確認すると、それをロードして使用します(メソッドの呼び出しとメンバーアクセスの場合)。
于 2012-07-09T19:43:08.457 に答える
0

PHPには、そのファイルに含まれるものがすべて含まれているだけです。2つのファイルをマージするだけです。

Javaのインポート機能を使用すると、そのインポートで指定されたメソッドにアクセスできます。基本的に、PHPは2つのファイルの基本的な組み合わせですが、Javaではそのファイルのメソッドとインターフェイスにアクセスできます。

于 2012-07-09T19:40:38.990 に答える
0

それらは非常に異なります。Phpは、インクルードされたファイルのソースコードをインクルードするだけです。Javaは、ClassLoaderを使用して、CLASSPATHのどこかにあるコンパイル済みクラスをロードしています。インポートは、現在の名前空間でそれらのクラスを参照することをコンパイラーに通知するだけです。インポートはそれ自体では何もロードしません。使用する場合にのみnew、JVMがクラスをロードします。

于 2012-07-09T19:41:07.183 に答える
0

あなたは<jsp:include>PHPインクルードに似たJavaを持っています。JavaインポートはPHPロードモジュールに似ています。

于 2012-07-09T19:43:49.393 に答える
0

Javaのphpインクルードに最も近いのは静的インポートです。つまり、次のようなものですimport static javax.servlet.http.HttpServlet。これにより、ローカルで宣言されているかのように同じクラスファイル内のメソッドを参照できます(これはインポートされたクラスの静的メンバーにのみ適用されます。ただし、これはほとんど使用されません。より緊密な形式の結合であり、ほとんどの場合回避する必要があります。 。私が役立つと思うのは、Junitテストケースの場合だけです。org.junit.Assertの静的インポートを実行すると、Assert.assertEquals(...)の代わりに短い形式のassertEquals(...)を使用できます。チェックアウト静的インポートに関するOracleのドキュメントはこちら

于 2012-07-09T19:46:14.863 に答える
0

私の経験との主な違いは、PHPでは何でもできるということです。PHPインクルードは、Javaがインポートを使用するのと同じ方法で扱うことができます。PHPファイルはすべて関数にすることも、最初から最後まで実行することもできます。

だからあなたのphpファイルは

<?php

echo(1 + 4)

?>

または、後で呼び出す関数を含めることもできます

<?php

function addTwoNumbers()
{
return 1 + 4;
}
?>

2番目のphpファイルをインクルードした場合は、includeステートメントの下にあるaddTwoNumbers関数を呼び出すことができます。多くのPHPファイルを作成するのではなく、個々の関数を指定する練習をするのが好きです。

于 2012-07-09T19:46:34.120 に答える