static的作用php
❶ static關鍵字的作用是什麼
static作用:
1、修飾函數的局部變數:
特點:有默認值0,只執行一次,運行一開始就開辟了內存,內存放在全局
2、修飾全局函數和全局變數:
特點:只能在本源文件使用
3、修飾類裡面的成員變數:
特點:和1差不多,定義多個static y,但只有一個y,不進入類的大小計算,不依賴於類對象的存在而存在(可直接調用,要進行外置聲明)
4、修飾類的成員函數:
特點:f():括弧里無this指針,只能調用他的本類靜態函數和他的靜態變數,即是用static修飾過的不依賴於類對象的存在而存在(可不進行外置聲明,直接調用)
(1)static的作用php擴展閱讀:
static的主要使用情況:
1、static方法
static方法一般稱作靜態方法,由於靜態方法不依賴於任何對象就可以進行訪問,因此對於靜態方法來說,是沒有this的,因為它不依附於任何對象,既然都沒有對象,就談不上this了。並且由於這個特性,在靜態方法中不能訪問類的非靜態成員變數和非靜態成員方法,因為非靜態成員方法/變數都是必須依賴具體的對象才能夠被調用。
但是要注意的是,雖然在靜態方法中不能訪問非靜態成員方法和非靜態成員變數,但是在非靜態成員方法中是可以訪問靜態成員方法/變數的。
2、static變數
static變數也稱作靜態變數,靜態變數和非靜態變數的區別是:靜態變數被所有的對象所共享,在內存中只有一個副本,它當且僅當在類初次載入時會被初始化。
而非靜態變數是對象所擁有的,在創建對象的時候被初始化,存在多個副本,各個對象擁有的副本互不影響。static成員變數的初始化順序按照定義的順序進行初始化。
3、static代碼塊
static關鍵字還有一個比較關鍵的作用就是 用來形成靜態代碼塊以優化程序性能。static塊可以置於類中的任何地方,類中可以有多個static塊。
在類初次被載入的時候,會按照static塊的順序來執行每個static塊,並且只會執行一次。為什麼說static塊可以用來優化程序性能,是因為它的特性:只會在類載入的時候執行一次。
❷ PHP 中的 new static 有何作用,如何理解
new關鍵字是用於實例化一個類
語法為 $class = new ClassName();
static關鍵字是用於定義類中靜態的屬性或方法,靜態屬性或方法可以不需要實例化就可以直接使用,例如:
<?php
class test
{
static function show(){
echo 'hello world';
}
}
//可以直接使用,不需要實例化
test::show();
//輸出hello world
?>
❸ php static 方法有什麼好處
靜態方法不需要所在類被實例化就可以直接使用。
靜態方法效率上要比實例化高,靜態方法的缺點是不自動進行銷毀,而實例化的則可以做銷毀。
靜態方法和靜態變數創建後始終使用同一塊內存,而使用實例的方式會創建多個內存。
❹ php 類中的static有什麼作用
new關鍵字是用於實例化一個類
語法為
$class
=
new
classname();
static關鍵字是用於定義類中靜態的屬性或方法,靜態屬性或方法可以不需要實例化就可以直接使用,例如:
?php
class
test
{
static
function
show(){
echo
'hello
world';
}
}
//可以直接使用,不需要實例化
test::show();
//輸出hello
world
?
❺ php static 是什麼意思
static是PHP內置關鍵詞;意為靜態的意思;該關鍵詞可以修飾類中變數或者方法;示例如下:
<?php
classBai{
publicstatic$name="";
publicstaticfunctionask(){
echo"hello,welcometo!".self::$name;
}
}
//測試
Bai::ask();
//hello,welcometo!
❻ php的靜態變數究竟有什麼作用
一、靜態變數具有這樣的特性:
當在某函數里定義一個靜態變數後,這個變數不會即使函數退出了,在下次調用這個函數時,它會使用前次被調用後留下的值。
此外,雖然該變數不隨函數的退出而繼續存在,但函數的外部並不能使用它。
因此,靜態變數的應用時機如下:
當多次調用一個函數,且要求在調用之間保留某些變數的值時,可考慮採用靜態局部變數。
雖然用全局變數也可以達到上述目的,但全局變數有時會造成意外的副作用,因此仍以採用局部靜態變數為宜。
以下是某應用中的示例代碼:
<?PHP
functionTest()
{
static$count=0;
$count++;
echo$count;
if($count<10){
Test();
}
$count--;
}
?>
二、對於類中定義的靜態變數來說,簡單點說,類的靜態成員可以不用實例化而直接使用。
❼ 說說php面向對象編程時static,public,private,protected 各有什麼意義
staticpublic與publicstatic是等價的,這兩者只是兩個修飾符的順序不同。根據oracle.com教材中第八章的描述,如果兩個或兩個以上的(不同的)欄位修飾符出現在欄位聲明,它們出現的順序需與FieldModifier一致,這只是習慣,但不是必需的。部分修飾符說明:public是訪問許可權修飾符,用於控制外界對類內部成員的訪問,聲明為public的對象成員是完全共有的,外界可以隨意訪問,除此之外還有private,protected和默認。static控制類成員變化的修飾符。static是靜態成員修飾符,其修飾的靜態變數脫離具體對象獨立存在,在內存中之後一份拷貝,所有的對象都公用這一個存儲空間,所以對static修飾的靜態變數進行的修改對該類的所有對象都起作用。static修飾的靜態函數代表所有對象的統一操作,只能調用靜態變數。static是針對面向對象中的「多態」而提出來的,static修飾的靜態成員不存在多態性。附:FieldModifier順序
❽ php中static 靜態變數和普通變數的區別
全局變數(外部變數)的說明之前再冠以static 就構成了靜態的全局變數。全局變數本身就是靜態存儲方式, 靜態全局變數當然也是靜態存儲方式。 這兩者在存儲方式上並無不同。這兩者的區別雖在於非靜態全局變數的作用域是整個源程序, 當一個源程序由多個源文件組成時,非靜態的全局變數在各個源文件中都是有效的。 而靜態全局變數則限制了其作用域, 即只在定義該變數的源文件內有效, 在同一源程序的其它源文件中不能使用它。由於靜態全局變數的作用域局限於一個源文件內,只能為該源文件內的函數公用, 因此可以避免在其它源文件中引起錯誤。 從以上分析可以看出, 把局部變數改變為靜態變數後是改變了它的存儲方式即改變了它的生存期。把全局變數改變為靜態變數後是改變了它的作用域, 限制了它的使用范圍。 static函數與普通函數作用域不同。僅在本文件。只在當前源文件中使用的函數應該說明為內部函數(static),內部函數應該在當前源文件中說明和定義。對於可在當前源文件以外使用的函數,應該在一個頭文件中說明,要使用這些函數的源文件要包含這個頭文件 static全局變數與普通的全局變數有什麼區別:static全局變數只初使化一次,防止在其他文件單元中被引用; static局部變數和普通局部變數有什麼區別:static局部變數只被初始化一次,下一次依據上一次結果值; static函數與普通函數有什麼區別:static函數在內存中只有一份,普通函數在每個被調用中維持一份拷貝
❾ php中static 靜態變數和普通變數的區別
php中static 靜態變數和普通變數的區別:
在變數的前面加上static 就構成了靜態變數(static 變數)。
static變數和普通變數的區別在於非靜態全局變數的作用域是整個源程序,當一個源程序由多個源文件組成時,非靜態的全局變數在各個源文件中都是有效的。 而靜態全局變數則限制了其作用域, 即只在定義該變數的源文件內有效, 在同一源程序的其它源文件中不能使用它。由於靜態全局變數的作用域局限於一個源文件內,只能為該源文件內的函數公用, 因此可以避免在其它源文件中引起錯誤。
❿ static關鍵字的作用
static關鍵字主要有兩種作用:
第一,為特定數據類型或對象分配單一的存貯空間,而與創建對象的個數無關。第二,希望某個方法或屬性與類而不是對象關聯在一起,也就是說,
在不創建對象的情況下就可以通過類來直接調用方法或使用類的屬性。具體而言,static在java中主要有四種使用情況:成員變數、成員方法、代碼塊及內部類。
(1)static成員變數
雖然java語言中沒有全局的概念,但可以通過static關鍵字來達到全局的效果。java類提供了兩種類型的變數:用static關鍵字修飾的靜態變數和沒有static關鍵字修飾的實例變數。靜態變數
屬於類,在內存中只有一個副本(所有實例都指向同一個內存地址)。只要靜態變數所在的類被載入,這個靜態類就會被分配空間,因此就可以被使用。對靜態變數的引用有兩種方式,分別為「類.靜態變數」和「對象.靜態變數」。
實例變數屬於對象,只有對象被創建後,實例變數才會被分配空間,才能被使用,他在內存中存在多個副本,只能用「對象.靜態變數」的方式來引用。
靜態變數只有一個,被類所擁有,所有的對象都共享這個靜態變數,而實例對象與具體對象有關。
(2) static成員方法
與變數類似,java類同時也提供了static方法與非static方法。static方法是類的方法,不需要創建對象就可以被使用,而非static方法是對象的方法,只有對象被創建出來後才可以被使用。
static 方法中不能使用this和super關鍵字,不能調用非static方法,只能訪問所屬類的靜態成員變數和成員方法,因為當static方法被調用的時候,這個類的對象可能還沒有被創建,即使已經被創建,
也無法確定調用哪個對象的方法。同理static方法也不能訪問非static類型的變數。
static的一個很重要的的用途的是實現單例模式。單例模式的特點是該類只能有一個實例,為了實現這功能,必須隱藏類的構造方法,即把構造方法聲明為private,並提供一個創建對象的方法。由於構造方法被聲明為private,外界無法直接創建這個類型對象,只能通過該類提供的方法來獲取類的對象