編譯型語言&解釋型語言
- 編譯型語言:編譯型語言寫的程序在被執(zhí)行前榨婆,需要有一個專門的編譯過程,把程序編譯成機器語言的文件褒侧,比如exe文件良风。如果以后要運行谊迄,直接使用編譯的結(jié)果便可,而不用再重新編譯烟央,因此一般來說執(zhí)行效率比解釋型語言要高统诺。
- 解釋型語言:不用編譯,需要專門的解釋器來解釋執(zhí)行疑俭,每條語句都是執(zhí)行時才翻譯粮呢,因此程序每執(zhí)行一次就需要翻譯一次,效率較低钞艇。
弱類型語言
- 弱類型語言是指在使用變量時啄寡,不需要做任何類型的聲明,該語言即可根據(jù)變量的值自動判斷變量類型哩照。
- 這也是PHP及其方便的一點挺物,不過在某些特殊情況下,還是需要嚴格遵守變量類型的定義規(guī)范(比如商品價格)飘弧。
簡介
- PHP(Hypertext Preprocessor识藤,超文本預(yù)處理器,追溯到最初應(yīng)該叫Personal Home Page次伶,個人主頁 )是一種腳本語言痴昧,從本質(zhì)上來說,也就是解釋型語言冠王,不需要編譯剪个,但需要有相應(yīng)的腳本引擎來解釋執(zhí)行。
- PHP是一種運行于后端服務(wù)器的腳本語言版确,開源且免費扣囊。可鑲嵌于HTML頁面中解析共存绒疗,動態(tài)創(chuàng)建輸出內(nèi)容侵歇,是構(gòu)建網(wǎng)頁最為省時簡單的解析性腳本語言。自版本7發(fā)布之后吓蘑,PHP的應(yīng)用變得更加廣泛惕虑。
各個版本
- PHP4引入面向?qū)ο蟮鹊鹊?/li>
- PHP5極大提高面向?qū)ο竽芰Φ鹊鹊取HP 5.6 將會在 2018 停止安全更新磨镶。
- PHP 7.1 非常新溃蔫,相較于 5.x 版本增加了強大的 新特性。PHP 引擎大部分被重寫琳猫,PHP 的運行速度已經(jīng)遠遠超越過去伟叛。
PHP運行原理
當用戶代碼輸入給PHP內(nèi)核去執(zhí)行的時候, PHP內(nèi)核會對PHP代碼進行詞法分析和語法分析脐嫂, 詞法分析是把PHP代碼分割成一個個的“單元”(TOKEN)统刮, 語法分析則將這些“單元”轉(zhuǎn)化為Zend Engine可執(zhí)行的操作紊遵。 然后PHP內(nèi)部的Zend Engine對這些操作進行順次的執(zhí)行。 Zend Engine是PHP內(nèi)核的核心部分侥蒙,負責最終操作的執(zhí)行和結(jié)果的返回暗膜, 可以理解成為PHP內(nèi)核中的“發(fā)動機”。
關(guān)于PHP與JAVA的看法
JAVA有多種成熟的架構(gòu)供選擇鞭衩,例如SSH框架学搜。雖然PHP也有眾多框架,但由于PHP的語言特性更偏向面向過程论衍,同時框架又和面向?qū)ο缶幊趟枷胗泻軓姷穆?lián)系恒水,因此PHP在框架這條路上與JAVA相去甚遠。簡單的系統(tǒng)設(shè)計PHP完全可以勝任饲齐,而復雜的系統(tǒng)設(shè)計钉凌,意味著后端代碼必須模塊化,要高內(nèi)聚/低耦合以及代碼重用捂人,JAVA更適合這樣的場景御雕。
這里扯一下PHP與面向?qū)ο蟛荒敲从押茫热绮恢С址椒ㄖ剌d滥搭、操作符重載酸纲、多重繼承(有人說通過遞歸實現(xiàn),會扛不住瑟匆,這里Mark一下闽坡,記住這個點)。不過PHP引入了trait愁溜,與多重繼承相似的一種代碼復用機制疾嗅。
trait
Trait 和 Class 相似,但僅僅旨在用細粒度和一致的方式來組合功能冕象。 無法通過 trait 自身來實例化代承。它為傳統(tǒng)繼承增加了水平特性的組合;也就是說渐扮,應(yīng)用的幾個 Class 之間不需要繼承论悴。
從基類繼承的成員會被 trait 插入的成員所覆蓋。優(yōu)先順序是來自當前類的成員覆蓋了 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!
近期想回顧一下基礎(chǔ),發(fā)現(xiàn)自己對很多東西沒有了解透徹耻讽,查看他人的博客察纯,然后瞎寫了上面一點東西,如有錯漏,歡迎指出捐寥。
參考:http://www.reibang.com/p/45a99aedc7ab
http://www.epnz.com/?p=art&id=914
http://www.reibang.com/p/90257a757884