導航:首頁 > 編程語言 > phpstatic方法的作用

phpstatic方法的作用

發布時間:2023-03-23 09:33:07

1. php靜態方法有什麼好處,什麼時候會用啊

  1. static關鍵字用來修飾屬性、方法,稱這些屬性、方法為靜態屬性、靜態方法。

  2. static關鍵字聲明一個屬性或方法是和類相關的,而不是和類的某個特定的實例相關,因此,這類屬性或方法也稱為「類屬性」或「類方法」,如果訪問控制許可權允許,可不必創建該類對象而直接使用類名加兩個冒號「::」調用。

  3. static關鍵字可以用來修飾變數、方法。

  4. 不經過實例化,就可以直接訪問類中static的屬性和static的方法。

  5. static 的屬性和方法,只能訪問static的屬性和方法,不能類訪問非靜態的屬性和方法。因為靜態屬性和方法被創建時,可能還沒有任何這個類的實例可以被調用。

  6. static的屬性,在內存中只有一份,為所有的實例共用。

  7. 使用self:: 關鍵字訪問當前類的靜態成員。一個類的所有實例,共用類中的靜態屬性。也就是說,在內存中即使有多個實例,靜態的屬性也只有一份。

  8. 靜態屬性直接調用 靜態屬性不需要實例化就可以直接使用,在類還沒有創建時就可以直接使用。

2. 靜態方法 有什麼優缺點 PHP中靜態方法(s

static方法是類中的一個成員方法,屬於整個類,即使不用創建任何對象也可以直接調用!
靜態方法效率上要比實例化高,靜態方法的缺點是不自動進行銷毀,而實例化的則可以做銷毀。
靜態方法和靜態變數創建後始終使用同一塊內存,而使用實例的方式會創建多個內存。
C++中,若類的方法前加了static關鍵字,則該方法稱為靜態方法,反之為實例方法。靜態方法為類所有,可以通過對象來使用,也可以通過類來使用。但一般提倡通過類名來使用,因為靜態方法只要定義了類,不必建立類的實例就可使用。靜態方法只能用類的靜態成員。

3. PHP 中的 new static 有何作用,如何理解

new關鍵字是用於實例化一個類
語法為 $class = new ClassName();
static關鍵字是用於定義類茄逗中靜態的屬性或方法,靜態屬性或方法可以不需要實例化就顫帶賣可以直接使用,行顫例如:
<?php
class test
{
static function show(){
echo 'hello world';

}
}

//可以直接使用,不需要實例化

test::show();

//輸出hello world

?>

4. PHP靜態方法和非靜態方法的區別

靜態方法必須使用static關鍵字聲明,面向對象編程中我們通常通過類的實例(而不是類的本身)來調用類,類其實是對象的模板,但是靜態方法區別於普通類,它不僅可以通過類的實例來調用,還可以通過類來訪問他們,比如 Game::getGame(); 使用類調用的時候使用::,在當前類調用還可以使用self關鍵字,比如 self::getGame(); 靜態方法是以類為作用域,不能訪問類中的普通屬性,因為他們屬於一個對象,但可以訪問靜態屬性。不知道你明白了沒有

5. PHP類的靜態(static)方法和靜態(static)變數使用介紹

在php中,訪問類的方法/變數有兩種方法:
1.
創建對象$object
=
new
Class(),然後使用」->」調用:$object->attribute/function,前提是該變數/方法可訪問。
2.
直接調用類方法/變數:class::attribute/function,無論是靜態/非靜態都可以。但是有前提條件:
A.
如果是變數,需要該變數可訪問。
B.
如果是方法,除了該方法可訪問外,還需要滿足:
b1)
如果是靜態方法,沒有特殊條件;
b2)
如果是非靜態方法,需要改方法中沒有使用$this,即沒有調用非靜態的變數/方法,當然,調用靜態的變數/方法沒有問題。
然後我們再看一下使用$object->…
和使用class::…
都有什麼區別:
1.
使用$object->…
,需要執行構造函數創建對象;
2.
使用class::…
調用靜態方法/變數,不需要執行構造函數創建對象;
3.
使用class::…
調用非靜態方法/變數,也不需要執行構造函數創建對象。
然後奇怪的地方就出來了,既然2和3都一樣,那靜態方法/變數存在還有什麼意義呢?
差異還是顯然存在的,如下:
1.
靜態變數
靜態成員只保留一個變數值,而這個變數值對所有的實例都是有效,也就是說,所有的實例共享這個成員。
2.
靜態方法
靜態方法可以直接使用class::…
來調用,而非靜態方法需要滿足一定限制條件才能使用class::..
的方法調用,如之前所述

6. php static 方法有什麼好處

  1. 靜態方法不需要所在類被實例化就可以直接使用。

  2. 靜態方法效率上要比實例化高,靜態方法的缺點是不自動進行銷毀,而實例化的則可以做銷毀。

  3. 靜態方法和靜態變數創建後始終使用同一塊內存,而使用實例的方式會創建多個內存。

7. 說說php面向對象編程時static,public,private,protected 各有什麼意義

staticpublic與publicstatic是等價的,這兩者只是兩個修飾符的順序不同。根據oracle.com教材中第八章的描述,如果兩個或兩個以上的(不同的)欄位修飾符出現在欄位聲明,它們出現的順序需與FieldModifier一致,這只是習慣,但不是必需的。部分修飾符說明:public是訪問許可權修飾符,用於控制外界對類內部成員的訪問,聲明為public的對象成員是完全共有的,外界可以隨意訪問,除此之外還有private,protected和默認。static控制類成員變化的修飾符。static是靜態成員修飾符,其修飾的靜態變數脫離具體對象獨立存在,在內存中之後一份拷貝,所有的對象都公用這一個存儲空間,所以對static修飾的靜態變數進行的修改對該類的所有對象都起作用。static修飾的靜態函數代表所有對象的統一操作,只能調用靜態變數。static是針對面向對象中的「多態」而提出來的,static修飾的靜態成員不存在多態性。附:FieldModifier順序

8. php 類中的static有什麼作用

static 是C中很常用的修飾符,它被用來控制變數的存儲方式和可見性
static 聲明的變數在C語言中有兩方面的特徵:

1)、變數會被放在程序的全局存儲區中,這樣可以在下一次調用的時候還可以保持原來的賦值。這一點是它與堆棧變數和堆變數的區別。

2)、變數用static告知編譯器,自己僅僅在變數的作用范圍內可見。這一點是它與全局變數的區別。

2、問題:Static的理解

關於static變數,請選擇下面所有說法正確的內容:

A、若全局變數僅在單個C文件中訪問,則可以將這個變數修改為靜態全局變數,以降低模塊間的耦合度;

B、若全局變數僅由單個函數訪問,則可以將這個變數改為該函數的靜態局部變數,以降低模塊間的耦合度;

C、設計和使用訪問動態全局變數、靜態全局變數、靜態局部變數的函數時,需要考慮重入問題;

D、靜態全局變數過大,可那會導致堆棧溢出。

答案與分析:

對於A,B:根據本篇概述部分的說明b),我們知道,A,B都是正確的。

對於C:根據本篇概述部分的說明a),我們知道,C是正確的(所謂的函數重入問題,下面會詳細闡述)。

對於D:靜態變數放在程序的全局數據區,而不是在堆棧中分配,所以不可能導致堆棧溢出,D是錯誤的。

因此,答案是A、B、C。

3、問題:不可重入函數

曾經設計過如下一個函數,在代碼檢視的時候被提醒有bug,因為這個函數是不可重入的,為什麼?

unsigned int sum_int( unsigned int base )
{
unsigned int index;
static unsigned int sum = 0; // 注意,是static類型的。
for (index = 1; index <= base; index++)
{
sum += index;
}
return sum;
}

答案與分析:

所謂的函數是可重入的(也可以說是可預測的),即:只要輸入數據相同就應產生相同的輸出。

這個函數之所以是不可預測的,就是因為函數中使用了static變數,因為static變數的特徵,這樣的函數被稱為:帶「內部存儲器」功能的的函數。因此如果我們需要一個可重入的函數,那麼,我們一定要避免函數中使用static變數,這種函數中的static變數,使用原則是,能不用盡量不用。

將上面的函數修改為可重入的函數很簡單,只要將聲明sum變數中的static關鍵字去掉,變數sum即變為一個auto 類型的變數,函數即變為一個可重入的函數。

當然,有些時候,在函數中是必須要使用static變數的,比如當某函數的返回值為指針類型時,則必須是static的局部變數的地址作為返回值,若為auto類型,則返回為錯指針。

9. static靜態變數和普通變數,靜態函數和普通函數

static變數和普通變數的區別

在於 非靜態全局變數的作用域 是整個源程序,當一個源程序由多個源文件組成時,非靜態的全局變數在各個源文件中都是有效的。
靜態全局變數則限制了其作用域 , 即只在定義該變數的源文件內有效, 在同一源程序的其它源文件中不能使用它。由於靜態全局變數的作用域局限於一個源文件內,只能為該源文件內的函數公用, 因此可以避免在其它源文件中引起錯誤。
static全局變數和普通全局變數 :static全局變數只初始化一次,房子其他文件中再被引用。
static局部變數和普通局部變數的區別侍告 :static再內存中只有一份,普通函數每次被調用一次拷貝一次。
全局靜態變數再聲明其之外是不可見的,作用於,從程序開頭到結尾
不會被其他文件說訪問,修改其他文件相同名字的變數不會被修改。
2. 使用
static用來定義方法和屬性,只有函數被第一次調用是否才會被初始化,但是可以不可以跟表達式和亮雀函數值。
(1)靜態屬性不需要實例化即可調用。因為靜態屬性存放的位置是在類里,調用方法為"類名::屬性名";
(2)靜態方法不需要實例化即可調用。也就是說不能在靜態方法中訪問普通的成員變數
(3)靜態敬談早方法不能調用非靜態屬性。因為非靜態屬性需要實例化後,存放在對象里;
(4)靜態方法可以調用非靜態方法,使用 self 關鍵詞。php里,一個方法被self:: 後,它就自動轉變為靜態方法;*
另外,self和static的區別:
例子:如果之類對父類進行重寫,那麼static會訪問子類的屬性,而self仍然只會訪問原類下的屬性

10. php的靜態變數究竟有什麼作用

一、靜態變數具有這樣的特性:


當在某函數里定義一個靜態變數後,這個變數不會即使函數退出了,在下次調用這個函數時,它會使用前次被調用後留下的值。


此外,雖然該變數不隨函數的退出而繼續存在,但函數的外部並不能使用它。


因此,靜態變數的應用時機如下:


當多次調用一個函數,且要求在調用之間保留某些變數的值時,可考慮採用靜態局部變數。


雖然用全局變數也可以達到上述目的,但全局變數有時會造成意外的副作用,因此仍以採用局部靜態變數為宜。


以下是某應用中的示例代碼:

<?PHP
functionTest()
{
static$count=0;
$count++;
echo$count;
if($count<10){
Test();
}
$count--;
}
?>


二、對於類中定義的靜態變數來說,簡單點說,類的靜態成員可以不用實例化而直接使用。

閱讀全文

與phpstatic方法的作用相關的資料

熱點內容
蘋果8p手機加密 瀏覽:747
ipad建文件夾怎麼弄 瀏覽:833
iphone13對wap3加密 瀏覽:555
pdf文件打開失敗 瀏覽:913
dubbo怎麼調用不同伺服器介面 瀏覽:40
全能解壓王app歷史版本 瀏覽:75
優先隊列與拓撲排序演算法 瀏覽:281
pdf轉換formacbook 瀏覽:871
pdf文件內容怎麼編輯 瀏覽:48
134壓縮機排氣溫度多少 瀏覽:256
unity等待編譯後 瀏覽:806
黑鯊手機鎖屏視頻在哪個文件夾 瀏覽:781
wow地圖解壓後怎麼壓縮 瀏覽:821
有pdf卻打不開 瀏覽:460
七星彩軟體app怎麼下載 瀏覽:217
32單片機的重映射哪裡改 瀏覽:816
為什麼前端不用刷演算法題 瀏覽:708
對稱加密系統和公鑰加密系統 瀏覽:428
歷史地理pdf 瀏覽:606
物聯網雲伺服器框架 瀏覽:648