php:語言結構和函數的區別

前言

這次我們要講的是語言結構和函數的區別,我相信對於大多數php初學者來說很難注意到這些區別。

因爲要實現一個功能,我們可以找到很多種方法來實現它,但是怎麼選擇,怎麼找出最高效的方法纔是關鍵,同樣的功能,但是不同樣的代碼,執行效率卻不一樣,除了在儘可能減少時間和空間複雜度少的算法上,我們還可以避免選擇一些函數,儘量選擇語言結構來處理,進而提高代碼的質量。

知識點很簡單,但是很實用。

 

一、 什麼是語言結構和函數 ?

語言結構:就是PHP語言的關鍵詞,語言語法的一部分;它不可以被用戶定義或者添加到語言擴展或者庫中;它可以有也可以沒有變量和返回值。

函數:由代碼塊組成的,可以複用。從源碼的角度來說,也就是基於Zend引擎的基礎來實現的,ext拓展庫中的函數都是這樣實現的。

 

二、語言結構爲什麼比函數執行效率高?

因爲函數在執行的時候都要先被PHP解析器分解成語言結構,然後在執行語言結構。由此可見,函數比語言結構多了一層解析器解析,相當於函數是在語言結構外包裝了一層。所以語言結構比函數要效率高。

 

三、php語言結構有哪些?

echo、print、die、isset、unset、include、require、array、list、empty 等。

注: include_once()、require_once()是函數.

 

四、怎麼判斷是語言結構還是函數 ?

<?php

function check($name){
    if(function_exists($name)){
        echo $name.'爲函數';
    }else{
        echo $name.'爲語言結構';
    }
}

check("isset");//輸出isset爲語言結構
check("array_push");//輸出array_push爲函數

 

小結:
語言結構不可再php.ini中禁用、函數可以禁用。
php.ini中查找 disable_functions =
在=後添加函數名,多個函數名用,分割
例如:disable_functions = exec,shell_exec

最後還是希望大家儘量使用語言結構,避免使用函數。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章