什麼是全域變數?
全域變數也稱為外部變量,是在函數的外部定義的,它的作用域為從變數定義處開始,到這個程式檔案的結尾。和其他程式語言不同,全域變數不是自動設定為可用的。上一章節我們介紹了php變數的範圍的局部變數,在PHP中,由於函數可以視為單獨的程式碼片段,所以局部變數會覆蓋全域變數的能見度,因此在函數中無法直接呼叫全域變數。
其程式碼如下所示的格式:
<?php $one = 10; $two = 20; // 测试在函数内部不能直接使用全局变量 $one 和 $two function sum(){ // 在函数内部新声明并且没有赋初始值的两个变量 echo "运算结果:".($one+$two)."<br>"; } sum(); //调用函数 ?>
該程式執行後輸出的結果如下顯示:
运算结果:0 // 两个变量没有初始值则为 NULL ,执行两个空值相加后结果为 0
在上面的實例中,函數sum() 外面宣告了兩個全域變數$one 和$twe,但在PHP中,不能直接在函數中使用全域變數。所以在 sum() 函數中使用的變數為 $one 和 $twe,相當於重新宣告的兩個變量,且沒有被賦予初始值,是兩個未定義空值的運算,所以得到的結果為0。在函數中若要使用全域變量,必須利用關鍵字定義目標變量,而這個全域變數的關鍵字為「 global 」, 使用關鍵字「global」你就可以把全域資料匯入到在一個函數的局部範圍內,以告訴函數主體此變數為全域變數。
下面在函數內部使用關鍵字「global」 呼叫函數外部宣告的全域變數來舉例:
<?php $one = 10; $two = 20; // 测试在函数内部使用关键字加载 global 全局变量 $one 和 $two function sum(){ //在函数内部使用关键字加载 global 全局变量,加载多个使用逗号分隔 global $one, $two; // 使用函数外部声明的全局变量 echo "运算结果:".($one+$two)."<br>"; } sum(); //调用函数 ?>
該程式執行後輸出的結果如下顯示:
运算结果为 30 // 使用 global 关键字就可以加载全局变量在函数内使用
“global”關鍵字是用來導入全域變數的。看起來它工作的很好,而且很簡單,但是還是要對使用“global”關鍵字來定義全域資料而擔心。因為有三個理由:
1、程式碼重用幾乎是不可能的。
如果一個函數依賴全域變量,那麼想在不同的環境中使用這個函數幾乎是不可能的。另外一個問題就是你不能提取出這個函數,然後在其他的程式碼中使用。
2、除錯並解決問題是非常困難的。
追蹤一個全域變數比追蹤一個非全域變數困難的多。一個全域變數可能會在一些不明顯的包含檔案中被重新定義,即使你有一個非常好的程式編輯器(或IDE)來幫助你,你也得花了幾個小時才能發現這個問題所在。
3、理解這些程式碼將是非常困難的事情。
你很難弄清楚一個全域變數是從哪裡來得,它是用來做什麼的。在開發的過程中,你可能會知道知道每一個全域變量,但大概一年之後,你可能會忘記其中至少一般的全域變量,這個時候你會為自己使用那麼多全域變量而懊悔不已。
$GLOBALS
在函數中使用全域變量,除了使用global 關鍵字,還可以使用特殊的php 自訂 $GLOBALS 陣列。前面的例子可以寫成使用 $GLOBALS 取代 global。
程式碼如下顯示:
<?php $one = 10; $two = 20; function sum(){ //在函数内部使用 $GLOBALS 访问全局变量, $GLOBALS["two"] = $GLOBALS["one"] + $GLOBALS["two"]; } sum(); //调用函数 echo $two; ?>
說明: 在 $GLOBALS 陣列中,每個變數是一個元素,鍵名對應變數名,值對應變數的內容。 $GLOBALS 之所以在全域範圍中存在,是因為它是一個超全域變數。
以上就是全域變數的定義以及php變數的範圍裡面的全域變數實例介紹,下一章將介紹什麼是php的static靜態變數。
【相關教學推薦】
3. php實戰影片教學
#以上是什麼是全域變數? php變數的範圍之全域變數實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

負載均衡會影響會話管理,但可以通過會話複製、會話粘性和集中式會話存儲解決。 1.會話複製在服務器間複製會話數據。 2.會話粘性將用戶請求定向到同一服務器。 3.集中式會話存儲使用獨立服務器如Redis存儲會話數據,確保數據共享。

Sessionlockingisatechniqueusedtoensureauser'ssessionremainsexclusivetooneuseratatime.Itiscrucialforpreventingdatacorruptionandsecuritybreachesinmulti-userapplications.Sessionlockingisimplementedusingserver-sidelockingmechanisms,suchasReentrantLockinJ

PHP會話的替代方案包括Cookies、Token-basedAuthentication、Database-basedSessions和Redis/Memcached。 1.Cookies通過在客戶端存儲數據來管理會話,簡單但安全性低。 2.Token-basedAuthentication使用令牌驗證用戶,安全性高但需額外邏輯。 3.Database-basedSessions將數據存儲在數據庫中,擴展性好但可能影響性能。 4.Redis/Memcached使用分佈式緩存提高性能和擴展性,但需額外配

Sessionhijacking是指攻擊者通過獲取用戶的sessionID來冒充用戶。防範方法包括:1)使用HTTPS加密通信;2)驗證sessionID的來源;3)使用安全的sessionID生成算法;4)定期更新sessionID。

本文比較了PHP和ASP.NET,重點是它們對大規模Web應用程序,性能差異和安全功能的適用性。兩者對於大型項目都是可行的,但是PHP是開源和無關的,而ASP.NET,


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Linux新版
SublimeText3 Linux最新版

Atom編輯器mac版下載
最受歡迎的的開源編輯器

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具