編譯型語言&解釋型語言
- 編譯型語言:編譯型語言寫的程序在被執行前,需要有一個專門的編譯過程,把程序編譯成機器語言的文件,比如exe文件。如果以后要運行,直接使用編譯的結果便可,而不用再重新編譯,因此一般來說執行效率比解釋型語言要高。
- 解釋型語言:不用編譯,需要專門的解釋器來解釋執行,每條語句都是執行時才翻譯,因此程序每執行一次就需要翻譯一次,效率較低。
弱類型語言
- 弱類型語言是指在使用變量時,不需要做任何類型的聲明,該語言即可根據變量的值自動判斷變量類型。
- 這也是PHP及其方便的一點,不過在某些特殊情況下,還是需要嚴格遵守變量類型的定義規范(比如商品價格)。
簡介
- PHP(Hypertext Preprocessor,超文本預處理器,追溯到最初應該叫Personal Home Page,個人主頁 )是一種腳本語言,從本質上來說,也就是解釋型語言,不需要編譯,但需要有相應的腳本引擎來解釋執行。
- PHP是一種運行于后端服務器的腳本語言,開源且免費。可鑲嵌于HTML頁面中解析共存,動態創建輸出內容,是構建網頁最為省時簡單的解析性腳本語言。自版本7發布之后,PHP的應用變得更加廣泛。
各個版本
- PHP4引入面向對象等等等
- PHP5極大提高面向對象能力等等等。PHP 5.6 將會在 2018 停止安全更新。
- PHP 7.1 非常新,相較于 5.x 版本增加了強大的 新特性。PHP 引擎大部分被重寫,PHP 的運行速度已經遠遠超越過去。
PHP運行原理
當用戶代碼輸入給PHP內核去執行的時候, PHP內核會對PHP代碼進行詞法分析和語法分析, 詞法分析是把PHP代碼分割成一個個的“單元”(TOKEN), 語法分析則將這些“單元”轉化為Zend Engine可執行的操作。 然后PHP內部的Zend Engine對這些操作進行順次的執行。 Zend Engine是PHP內核的核心部分,負責最終操作的執行和結果的返回, 可以理解成為PHP內核中的“發動機”。
關于PHP與JAVA的看法
JAVA有多種成熟的架構供選擇,例如SSH框架。雖然PHP也有眾多框架,但由于PHP的語言特性更偏向面向過程,同時框架又和面向對象編程思想有很強的聯系,因此PHP在框架這條路上與JAVA相去甚遠。簡單的系統設計PHP完全可以勝任,而復雜的系統設計,意味著后端代碼必須模塊化,要高內聚/低耦合以及代碼重用,JAVA更適合這樣的場景。
這里扯一下PHP與面向對象不那么友好,比如不支持方法重載、操作符重載、多重繼承(有人說通過遞歸實現,會扛不住,這里Mark一下,記住這個點)。不過PHP引入了trait,與多重繼承相似的一種代碼復用機制。
trait
Trait 和 Class 相似,但僅僅旨在用細粒度和一致的方式來組合功能。 無法通過 trait 自身來實例化。它為傳統繼承增加了水平特性的組合;也就是說,應用的幾個 Class 之間不需要繼承。
從基類繼承的成員會被 trait 插入的成員所覆蓋。優先順序是來自當前類的成員覆蓋了 trait 的方法,而 trait 則覆蓋了被繼承的方法。
<?php
trait HelloWorld {
public function sayHello() {
echo 'Hello World!';
}
}
class TheWorldIsNotEnough {
use HelloWorld;
public function sayHello() {
echo 'Hello Universe!';
}
}
$o = new TheWorldIsNotEnough();
$o->sayHello();
?>
output:
Hello Universe!
近期想回顧一下基礎,發現自己對很多東西沒有了解透徹,查看他人的博客,然后瞎寫了上面一點東西,如有錯漏,歡迎指出。
參考:http://www.lxweimin.com/p/45a99aedc7ab
http://www.epnz.com/?p=art&id=914
http://www.lxweimin.com/p/90257a757884