在服務端使用PHP開發的時候,經常會將PHP、HTML、JS、CSS這些程式碼寫在一起,尤其是將PHP程式碼混合在後三者之中(CSS比較少)。但是實際上在執行的時候,這幾個部分是分別獨立執行的。
PHP只能在服務端執行,在請求發出之後,伺服器執行PHP指令碼,對於PHP直譯器來說,它只能看到和執行<?php ?>中間的那部分程式碼,在執行這部分程式碼之後,會生成請求需要的資料,有時候這些資料是一個json字串,有時候這個東西就是一個包含HTML、JS、CSS這些程式碼的頁面。
PHP生成JS程式碼就是這時候生成的,對於PHP直譯器來說,那些JS程式碼和普通的字串沒有區別。
在這之後,伺服器從PHP的緩衝區讀出這些資料(比如一個包含了HTML、JS和CSS程式碼的頁面),然後將這些資料打包傳送給瀏覽器。瀏覽器內嵌了HTML、JS和CSS的解釋程式,所以瀏覽器可以執行HTML、JS和CSS程式碼。同樣的,因為瀏覽器沒有PHP解釋程式,所以瀏覽器是不能執行PHP程式碼的。
簡單來說,就像是有這麼一堵牆,牆的一邊是瀏覽器,它能執行HTML、JS和CSS;牆的另一邊是伺服器,它能執行PHP;兩者透過HTTP協議互動。對於瀏覽器來說,因為不認識PHP程式碼,所以就算給它一段PHP程式碼,對它來說也就是一堆普通的字串。同樣的,對於伺服器來說,所謂HTML、JS和CSS程式碼跟“Hello,world”沒有任何區別。
不管是JS還是PHP都可以生成任何形式的字串,所以它們可以生成任何語言的程式碼。
再說遠一點兒,如果沒有程式去解釋執行,任何程式碼都只是一堆字串。
在服務端使用PHP開發的時候,經常會將PHP、HTML、JS、CSS這些程式碼寫在一起,尤其是將PHP程式碼混合在後三者之中(CSS比較少)。但是實際上在執行的時候,這幾個部分是分別獨立執行的。
PHP只能在服務端執行,在請求發出之後,伺服器執行PHP指令碼,對於PHP直譯器來說,它只能看到和執行<?php ?>中間的那部分程式碼,在執行這部分程式碼之後,會生成請求需要的資料,有時候這些資料是一個json字串,有時候這個東西就是一個包含HTML、JS、CSS這些程式碼的頁面。
PHP生成JS程式碼就是這時候生成的,對於PHP直譯器來說,那些JS程式碼和普通的字串沒有區別。
在這之後,伺服器從PHP的緩衝區讀出這些資料(比如一個包含了HTML、JS和CSS程式碼的頁面),然後將這些資料打包傳送給瀏覽器。瀏覽器內嵌了HTML、JS和CSS的解釋程式,所以瀏覽器可以執行HTML、JS和CSS程式碼。同樣的,因為瀏覽器沒有PHP解釋程式,所以瀏覽器是不能執行PHP程式碼的。
簡單來說,就像是有這麼一堵牆,牆的一邊是瀏覽器,它能執行HTML、JS和CSS;牆的另一邊是伺服器,它能執行PHP;兩者透過HTTP協議互動。對於瀏覽器來說,因為不認識PHP程式碼,所以就算給它一段PHP程式碼,對它來說也就是一堆普通的字串。同樣的,對於伺服器來說,所謂HTML、JS和CSS程式碼跟“Hello,world”沒有任何區別。
不管是JS還是PHP都可以生成任何形式的字串,所以它們可以生成任何語言的程式碼。
再說遠一點兒,如果沒有程式去解釋執行,任何程式碼都只是一堆字串。