[英]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中,使用導入的類:
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.