- 相關(guān)推薦
PHP的語(yǔ)言結(jié)構(gòu)和函數(shù)的區(qū)別
使用PHP編程的最大好處是編程語(yǔ)言非常容易,系統(tǒng)功能庫(kù)非常豐富。那么大家知道PHP的語(yǔ)言結(jié)構(gòu)和函數(shù)的區(qū)別是什么呢?下面一起來(lái)看看!
php語(yǔ)言結(jié)構(gòu)函數(shù)
相信大家經(jīng)常看到對(duì)比一些PHP應(yīng)用中,說(shuō)用isset() 替換 strlen(),isset比strlen執(zhí)行速度快等。
例子:
if ( isset($user) ) {
//do some thing
}
原因是isset是語(yǔ)言結(jié)構(gòu),而strlen是一個(gè)函數(shù)。還有echo 是個(gè)語(yǔ)言結(jié)構(gòu),不是個(gè)函數(shù)。
那什么是語(yǔ)言結(jié)構(gòu)呢?它和函數(shù)有什么不同嗎?
1、 什么是語(yǔ)言結(jié)構(gòu)和函數(shù)
語(yǔ)言結(jié)構(gòu):就是php語(yǔ)言的關(guān)鍵詞,語(yǔ)言語(yǔ)法的一部分;它不可以被用戶(hù)定義或者添加到語(yǔ)言擴(kuò)展或者庫(kù)中;它可以有也可以沒(méi)有變量和返回值。
函數(shù):由代碼塊組成的,可以復(fù)用。從源碼的角度來(lái)說(shuō),也就是基于Zend引擎的基礎(chǔ)來(lái)實(shí)現(xiàn)的,ext拓展庫(kù)中的函數(shù)都是這樣實(shí)現(xiàn)的。
2、 語(yǔ)言結(jié)構(gòu)為什么比函數(shù)快原因是在PHP中,函數(shù)都要先被PHP解析器(Zend引擎)分解成語(yǔ)言結(jié)構(gòu),所以有此可見(jiàn),函數(shù)比語(yǔ)言結(jié)構(gòu)多了一層解析器解析。這樣就能比較好的理解,什么語(yǔ)言結(jié)構(gòu)比函數(shù)快了。
3、 語(yǔ)言結(jié)構(gòu)和函數(shù)的不同 語(yǔ)言結(jié)構(gòu)比對(duì)應(yīng)功能的函數(shù)快語(yǔ)言結(jié)構(gòu)在錯(cuò)誤處理上比較魯棒,由于是語(yǔ)言關(guān)鍵詞,所以不具備再處理的環(huán)節(jié)語(yǔ)言結(jié)構(gòu)不能在配置項(xiàng)(php.ini)中禁用,函數(shù)則可以。語(yǔ)言結(jié)構(gòu)不能被用做回調(diào)函數(shù)
4、 語(yǔ)言結(jié)構(gòu)列表
echo()
print()
die()
isset()
unset()
include(),注意,include_once()是函數(shù)
require(),注意,require_once()是函數(shù)
array()
list()
empty()
【PHP的語(yǔ)言結(jié)構(gòu)和函數(shù)的區(qū)別】相關(guān)文章:
PHP函數(shù)的區(qū)別及用法10-27
Java和PHP的區(qū)別09-09
PHP中php://input和$-POST的區(qū)別08-26
php empty()和isset()的區(qū)別09-28
php中的daddslashes()和saddslashes()的區(qū)別08-24
PHP語(yǔ)言有哪些常用的系統(tǒng)函數(shù)10-07