????:本章小結(jié)問題:PHP不支持塊級作用域會引發(fā)哪些問題?應(yīng)該如何避免呢?答案:引發(fā)的問題主要是后面的同名變量可能會覆蓋前面的變量。在PHP語法層面沒有太好的辦法避免,只能盡量保證變量命名的規(guī)范性來減少變量同名覆蓋的問題。還有從編碼方法上,盡量不要讓一個方法的代碼長度過長(一般不超50行),這樣一眼基本上能看到方法中的所有變量,排查變量同名比較方便。本章小結(jié)1. &nb
本章小結(jié)問題:PHP不支持塊級作用域會引發(fā)哪些問題?應(yīng)該如何避免呢?
答案:引發(fā)的問題主要是后面的同名變量可能會覆蓋前面的變量。在PHP語法層面沒有太好的辦法避免,只能盡量保證變量命名的規(guī)范性來減少變量同名覆蓋的問題。還有從編碼方法上,盡量不要讓一個方法的代碼長度過長(一般不超50行),這樣一眼基本上能看到方法中的所有變量,排查變量同名比較方便。
本章小結(jié)
1. PHP的變量該定義在哪;
變量可以在三個地方定義,在函數(shù)內(nèi)部定義為局部變量,在函數(shù)外部:定義為全局變量,在函數(shù)參數(shù)列表定義為局部變量。
局部變量在函數(shù)內(nèi)部定義,函數(shù)內(nèi)部定義的變量僅限在函數(shù)內(nèi)部訪問,函數(shù)外部不可見。全局變量在函數(shù)外部定義,在函數(shù)中不能直接訪問全局變量,但是在函數(shù)外部可以直接訪問。在函數(shù)參數(shù)列表中聲明的變量也是局部變量,這個變量是一個占位符,實(shí)際上在函數(shù)內(nèi)部是通過另一個函數(shù)來獲取到列表變量值的所以函數(shù)內(nèi)部,實(shí)際上還是初始化了一個局部變量,所以說,參數(shù)列表中聲明的變量也是一個局部變量。
2. 如何在函數(shù)中訪問全局變量;
在函數(shù)中訪問全局變量首先使用global關(guān)鍵字訪問,也可以使用$GLOBALS超全局變量訪問,還可以使用函數(shù)傳參的方式訪問。
超全局變量,其實(shí)也是全局變量,只是不需要用戶定義,而是由系統(tǒng)事先定義好的,用戶可以直接使用。函數(shù)外部定義的全局變量,會自動成為超全局變量$GLOBALS數(shù)組中的一個值,數(shù)組是用一個變量集合,使用鍵名來訪問內(nèi)部的變量。
3. PHP變量的類型;
1. 標(biāo)準(zhǔn)變量: 單值變量,整數(shù),浮點(diǎn)數(shù),布爾,字符串;
2. 復(fù)合類型: 數(shù)組和對象;
數(shù)組是指多個變量的集合,通過變量在集合中的索引來訪問數(shù)組,索引是從0開始計數(shù)。對象是內(nèi)部封裝了屬性和方法的抽象類型,屬性相當(dāng)于變量,方法相當(dāng)于函數(shù)。
3.特殊類型: NULL, 資源類型;
4. 創(chuàng)建和使用作用域;
函數(shù)可以創(chuàng)建一個作用域,變量的訪問收到作用域的影響。全局作用域,就是從腳本的運(yùn)行,直到這個腳本被關(guān)閉,都是有效的,貫穿整個程序的生命周期。php中只有函數(shù)作用域,只要聲明一個函數(shù)就會創(chuàng)造出一個作用域。作用域,就是定義變量的地方,函數(shù)外定義的變量是全局作用域,函數(shù)作用域內(nèi)的變量僅限于函數(shù)內(nèi)訪問,系統(tǒng)預(yù)定義變量不受作用域的限制。
5. 什么是常量?如何正確使用常量
1.常量的定義: define()和const
1.常量其實(shí)就是只讀變量,一旦定義,不允許再賦值,更不允許刪除,特別適合于數(shù)據(jù)相對固定的數(shù)據(jù),例如國籍,品牌等;
2.常量與超全局變量一樣不受作用域的限制,可以在函數(shù)中直接訪問;
3.常量不要用$開頭,推薦全部使用大寫字母,多個單詞之間推薦使用下劃線進(jìn)行連接;
4.常量只能通過define()函數(shù)定義,而不能通過賦值語句;
5.常量必須使用標(biāo)量進(jìn)行初始化:字符串,數(shù)值,布爾值; 6.常量也指的是只讀變量。不能修改,不能刪除。
2.常量的作用域: 類似預(yù)定義變量,在函數(shù)中不用聲明,可以直接使用;
3. define()聲明的常量,可以使用標(biāo)量或值為標(biāo)量的變量表達(dá)式, const只能使用標(biāo)量字面量const 可以聲明類常量,define()不可以define()聲明的常量,不受命名空間的限制,const則依賴于類,類依賴于命名空間。
?? ???:天蓬老師?? ??:2019-03-22 09:00:48
???? ??:所謂全局變量, 它的性質(zhì)與常量是一樣的, 就是不受作用域限制,在函數(shù)中使用的時候,需要套個馬甲就行