簡體   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