摘要:的全局變量看起來(lái)很好用,但稍有不慎,很容易被套住。比如如果一個(gè)簡(jiǎn)單的配置文件如下當(dāng)我們想要使用這個(gè)的時(shí)候,都知道使用就行了。沒(méi)錯(cuò),這樣可以。
php 的全局變量看起來(lái)很好用,但稍有不慎,很容易被套住。
比如: 如果一個(gè)簡(jiǎn)單的php配置文件如下:
$name="Yi_Zhi_Yu";
當(dāng)我們想要使用這個(gè)$name的時(shí)候,都知道使用include就行了。沒(méi)錯(cuò),這樣可以。但假如我想把這個(gè)$name作為一個(gè)全局變量使用,以方便統(tǒng)一修改呢
也容易:
include("./config.inc"); global $name; echo $name; //Yi_Zhi_Yu
那么問(wèn)題來(lái)了,假如某個(gè)函數(shù)里我要用這個(gè)全局變量呢,或許你會(huì)這么寫
function test() { include("./config.inc"); //這里加載是錯(cuò)誤的 global $name; var_dump($name); } test();
Sorry, 你這樣是得不到這個(gè)變量值得,得到的僅僅是個(gè)null
這就是我在實(shí)際中遇到的一個(gè)坑,即文件加載的全局變量的初始化只能在整個(gè)腳本的最外層,我說(shuō)的最外層是指不能被包含在任何的函數(shù)體或者類里面
include("./config.inc"); //最外層初始化全局變量 function test() { global $name; //使用的時(shí)候定義其全局屬性 echo $name; //Yi_Zhi_Yu } test();
那再來(lái)一個(gè)問(wèn)題,一個(gè)在test里面被定義了全局屬性的變量(假設(shè)$age=25),假如在外面被修改了值($age=27),然后這個(gè)變量($age)再在另一個(gè)函數(shù)中調(diào)用,這個(gè)時(shí)候的這個(gè)$age應(yīng)該是哪個(gè)值呢,代碼如下,是被初始化的時(shí)候值(25),還是在外面被修改了的值(27)呢。
function test() { global $age; $age=25; } function test2() { global $age; var_dump($age); //這個(gè)值應(yīng)該是什么? } test(); var_dump($age); $age=27; test2();
沒(méi)錯(cuò),這個(gè)值應(yīng)該是27, 這就是全局變量,只不過(guò)這種定義和初始化都是在一個(gè)函數(shù)體內(nèi)完成的(不過(guò)這種方式不推薦,一般都是在最上面我說(shuō)的配置文件中初始化的,只在使用的時(shí)候定義其全局屬性,但不會(huì)在代碼中修改其值,僅僅作為配置項(xiàng)獲取)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/30219.html
摘要:話說(shuō)當(dāng)下一共有種運(yùn)行模式,分別是和模塊模式。使用,全稱進(jìn)程管理器進(jìn)行管理。工作原理啟動(dòng)時(shí)載入進(jìn)程管理器進(jìn)程管理器自身初始化,啟動(dòng)多個(gè)解釋器進(jìn)程并等待來(lái)自的連接當(dāng)客戶端請(qǐng)求到達(dá)時(shí),進(jìn)程管理器選擇并連接到一個(gè)解釋器。 我們知道 workerman 程序需要在php-cli模式下運(yùn)行,也就是命令行模式,這塊我們有必要了解一下。 話說(shuō)PHP當(dāng)下一共有4種運(yùn)行模式,分別是CGI、FastCGI、...
摘要:而類的實(shí)例并不會(huì)影響類的靜態(tài)變量,只是會(huì)修改對(duì)象實(shí)例本身的值,所以后面兩個(gè)的結(jié)果總是同樣,如果我們使用和結(jié)果也將僅僅是靜態(tài)變量變化后的結(jié)果,與類的實(shí)例無(wú)關(guān)以上是對(duì)和的暫時(shí)做的了解的總結(jié),如有紕漏,請(qǐng)及時(shí)指正 概念 python 的classmethod 與staticmethod 這兩個(gè)有什么區(qū)別? 二者又有什么聯(lián)系?在google和baidu之后, 得到的大致的聯(lián)系就是二者都是對(duì)類的...
摘要:起步引擎提供了另種管理設(shè)置值的途徑。假設(shè)我們需要為我們擴(kuò)展定義一個(gè)值并用函數(shù)返回它的內(nèi)容。在為了避免命名空間的沖突,我們擴(kuò)展的名字作為所有值的前綴。僅僅是一種約定,一個(gè)句點(diǎn)用來(lái)分隔擴(kuò)展名和說(shuō)明性的初始設(shè)定名字。 起步 Zend引擎提供了另種管理設(shè)置值(INI)的途徑。現(xiàn)在弄個(gè)簡(jiǎn)單的,我們經(jīng)常看到php.ini里有諸如 display_errors = On 這樣的全局設(shè)置。假設(shè)我們需要...
摘要:如果現(xiàn)有子進(jìn)程中的線程總數(shù)不能滿足負(fù)載,控制進(jìn)程將派生新的子進(jìn)程。為解決線程的并發(fā)問(wèn)題,引入了線程安全資源管理器。的全拼,用來(lái)存放各個(gè)線程的鏈表。 PHP 進(jìn)階之路 - 零基礎(chǔ)構(gòu)建自己的服務(wù)治理框架(上) PHP 進(jìn)階之路 - 零基礎(chǔ)構(gòu)建自己的服務(wù)治理框架(下) PHP 進(jìn)階之路 - 億級(jí) pv 網(wǎng)站架構(gòu)的技術(shù)細(xì)節(jié)與套路 PHP 進(jìn)階之路 - 億級(jí) pv 網(wǎng)站架構(gòu)實(shí)戰(zhàn)之性能壓榨 注...
摘要:本文介紹筆者自己寫的語(yǔ)法糖擴(kuò)展,擴(kuò)展了一種全新的超全局變量獲取方式。優(yōu)秀的語(yǔ)法糖,應(yīng)該是一種靈魂思想的注入,簡(jiǎn)單寫法的應(yīng)用。非常重要的一點(diǎn)是它很簡(jiǎn)單項(xiàng)目背景這個(gè)出發(fā)點(diǎn)很簡(jiǎn)單,從擴(kuò)展名稱我們應(yīng)該能猜到它是做什么的。 奇技指南語(yǔ)法糖往往給程序員提供了更實(shí)用的編碼方式,可以使代碼更簡(jiǎn)潔流暢,語(yǔ)義更自然。本文介紹筆者自己寫的PHP語(yǔ)法糖擴(kuò)展,擴(kuò)展了一種全新的PHP超全局變量獲取方式。本文作者...
閱讀 1225·2021-11-25 09:43
閱讀 1979·2021-11-11 10:58
閱讀 1194·2021-11-08 13:18
閱讀 2693·2019-08-29 16:25
閱讀 3519·2019-08-29 12:51
閱讀 3317·2019-08-29 12:30
閱讀 756·2019-08-26 13:24
閱讀 3692·2019-08-26 10:38