繁体   English   中英

PHP包含和Java导入声明之间的区别

[英]Difference between PHP includes and Java Import Declarations

在PHP中,我们有:

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

而在Java中,您有导入:

import javax.servlet.http.HttpServlet;

根据我的理解,PHP包括简单地将外部文件的内容转储到包含include语句的文件中。

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

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

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

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

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

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

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

他们是非常不同的。 Php只包含来自包含文件的源代码。 Java正在使用ClassLoader来加载位于CLASSPATH中某处的已编译类。 导入只是告诉编译器您要在当前命名空间中引用这些类。 导入不会自动加载任何内容,只有当您使用new ,JVM才会加载该类。

你在Java中使用<jsp:include>类似于PHP include。 Java导入类似于PHP加载模块。

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

与我的经验的主要区别在于PHP允许您做任何事情。 您可以使用与Java使用其导入相同的方式处理PHP。 PHP文件可以是所有功能,也可以简单地从头到尾执行。

所以你的php文件可能是

<?php

echo(1 + 4)

?>

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

<?php

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM