PHP7系列 解釋型語言也需要編譯嗎(九)

2021-10-08 08:14:53 字數 504 閱讀 1447

首先我們來看看編譯型語言與解釋型語言的區別是什麼。

編譯型語言

源語言(c語言)首先編譯器進行編譯,如果編譯錯誤就報出錯誤資訊;如果編譯通過則生成乙個可執行的二進位制檔案(目標語言),可以直接在物理機上執行。

解釋型語言

以php**為例。php**其實也需要經過編譯器編譯,因為是實時編譯的,所以我們寫的**能直接看到結果。這個編譯器是由php核心實現的,涉及到了詞法與語法的分析。先把**編譯成opcodes,需要虛擬機器才能執行執行的**。

所以這樣看來php解釋型語言也是需要編譯的。 所以一般提高php的執行效率,所以一般會opcodes之上加一層快取,以提高php的執行效率。

PHP7型別約束

在php7之前,函式和類方法不需要宣告變數型別,任何資料都可以被傳遞和返回,導致幾乎大部分的呼叫操作都要判斷返回的資料型別是否合格。為了解決這個問題,php7引入了型別宣告。目前有兩類變數可以宣告型別 形參,返回值。支援的型別有整形,浮點型,字串型,布林型。如下 function study int...

php7型別約束的意義

php7型別約束的意義 在php7之前,函式和類方法不需要宣告變數型別,任何資料都可以被傳遞和返回,導致幾乎大部分的呼叫操作都要判斷返回的資料型別是否合格。為了解決這個問題,php7引入了型別宣告。目前有兩類變數可以宣告型別 形參,返回值。支援的型別有整形,浮點型,字串型,布林型。如下 functi...

php7 其他語言層面的修改

一 在非相容 this語境中以靜態方式呼叫非靜態方法將不再支援。class a note does not extend a class b new b callnonstaticmethodofa deprecated non static method a test should not be ...