3

在 PHP 中,我们有:

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

而在 Java 中,您有导入:

import javax.servlet.http.HttpServlet;

据我了解,PHP 包含只是将外部文件的内容转储到包含包含语句的文件中。

我的直觉是 Java 处理这些包含/导入的方式与 PHP 不同。主要区别是什么?

4

7 回答 7

3

PHP 的 include 与在 include() 指令所在的位置逐字剪切/粘贴包含文件的原始内容几乎完全相同。

Java 已编译,因此没有要“包含”的源代码 - JVM 只是加载对象/类定义并使其可供使用。这很像#includeC 中的指令。您不是加载文字源代码,而是加载函数定义/原型/指纹以供以后使用。

于 2012-07-09T19:40:46.393 回答
1

在 php 中,它只是将文件的内容转储到当前文件中。在 Java 中,使用了一个导入的类:

  1. 用于使用导入的类将源代码编译为字节码。
  2. 在运行时,当 JVM 看到您的程序引用了导入的类时,它会加载并使用它(如果是这种情况,则用于方法调用和成员访问)
于 2012-07-09T19:43:08.457 回答
0

Java 中最接近 php 包含的是静态导入。即类似的东西:import static javax.servlet.http.HttpServlet。这允许您引用同一个类文件中的方法,就像它们在本地声明一样(这只适用于导入类的静态成员。但是,这很少使用。这是一种更紧密的耦合形式,在大多数情况下应避免使用.我发现它唯一有用的是Junit测试用例。对org.junit.Assert进行静态导入允许您使用较短的形式assertEquals(...)而不是Assert.assertEquals(...)。查看Oracle 关于静态导入的文档在这里

于 2012-07-09T19:46:14.863 回答
0

与我的经验的主要区别在于 PHP 允许您做任何事情。您可以像对待 Java 使用其导入一样对待 PHP 包含。PHP 文件可以是所有功能,也可以简单地从头到尾执行。

所以你的php文件可能是

<?php

echo(1 + 4)

?>

或者它可能包括您稍后调用的函数

<?php

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

如果包含第二个 php 文件,则可以在包含语句下方调用 addTwoNumbers 函数。我喜欢练习指定单个函数,而不是创建许多 PHP 文件。

于 2012-07-09T19:46:34.120 回答
0

PHP 只包含该文件中的任何内容。它只是将两个文件合并在一起。

Java 的导入函数使您可以访问该导入中指定的方法。基本上,PHP 只是这两个文件的基本组合,而 Java 使您可以访问该文件的方法和接口。

于 2012-07-09T19:40:38.990 回答
0

它们非常不同。php 只包含包含文件中的源代码。Java 正在使用 ClassLoader 加载位于 CLASSPATH 中某处的已编译类。导入只是告诉编译器您要引用当前命名空间中的那些类。import 本身不会加载任何东西,只有当你使用 时new,JVM 才会加载该类。

于 2012-07-09T19:41:07.183 回答
0

<jsp:include>在 Java 中拥有类似于 PHP 的包含。Java 导入类似于 PHP 加载模块。

于 2012-07-09T19:43:49.393 回答