程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php中在變量和函數前加static關鍵字之後的區別

php中在變量和函數前加static關鍵字之後的區別

編輯:關於PHP編程

static全局變量和普通全局變量,static局部變量和普通局部變量,static函數與普通函數的區別?下面本文將一一為你解答。
  
(1)全局變量(外部變量)的說明之前再冠以static 就構成了靜態的全局變量。全局變量本身就是靜態存儲方式, 靜態全局變量當然也是靜態存儲方式。這兩者在存儲方式上並無不同。這兩者的區別在於非靜態全局變量的作用域是整個源程序,當一個源程序由多個源文件組成時,非靜態的全局變量在各個源文件中都是有效的。 而靜態全局變量則限制了其作用域, 即只在定義該變量的源文件內有效,在同一源程序的其它源文件中不能使用它。由於靜態全局變量的作用域局限於一個源文件內,只能為該源文件內的函數公用,因此可以避免在其它源文件中引起錯誤。

(2)從以上分析可以看出, 把局部變量改變為靜態變量後是改變了它的存儲方式即改變了它的生存期。把全局變量改變為靜態變量後是改變了它的作用域,限制了它的使用范圍。  

(3)static函數與普通函數作用域不同,僅在本文件。只在當前源文件中使用的函數應該說明為內部函數(static),內部函數應該在當前源文件中說明和定義。對於可在當前源文件以外使用的函數,應該在一個頭文件中說明,要使用這些函數的源文件要包含這個頭文件。

綜上所述:

static全局變量與普通的全局變量有什麼區別?

static全局變量只初使化一次,防止在其他文件單元中被引用;
 
static局部變量和普通局部變量有什麼區別?

static局部變量只被初始化一次,下一次依據上一次結果值;  
 
static函數與普通函數有什麼區別?

static函數在內存中只有一份,普通函數在每個被調用中維持一份拷貝;

您可能感興趣的文章

  • PHP中跳出多重循環使用break,continue,goto,return,exit的用法和區別
  • PHP在引號前面添加反斜槓的原因及PHP去除反斜槓的辦法,三種辦法關閉php魔術引號
  • php中$this、static、final、const、self 等幾個關鍵字的用法
  • 用PHP函數memory_get_usage獲取當前PHP內存消耗量以實現程序的性能優化
  • php字符串替換函數str_replace速度比preg_replace快
  • smarty模板中使用php函數以及smarty模板中如何對一個變量使用多個函數
  • PHP中的字符串處理函數(String Functions) 全總結
  • PHP壓縮html網頁代碼減小網絡數據傳輸量,清除空格,制表符,注釋標記

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved