php基礎 27 靜態變數和靜態方法

2021-10-09 17:36:31 字數 1826 閱讀 8427

1、在類中定義靜態變數

[訪問修飾符] static $變數名

例如:public static $num=0;

2、如何訪問靜態變數

①如果在類中訪問有兩種方法: 

self::$靜態變數名

類名::$靜態變數名

②如果在類外訪問:

類名::$靜態變數名

3、什麼時候需要用靜態變數

當變數需要所有物件共享時,應當使用靜態變數

4、靜態變數和全域性變數

靜態變數和全域性變數功能從本質上沒有什麼區別(都存在資料段),唯一區別是靜態資料可以通過類的方式來訪問(物件導向封裝性)

例如:提出乙個問題:

說,有一群小孩在玩堆雪人,不時有新的小孩加入,請問如何知道現在共有多少人在玩?請使用物件導向的思想,編寫程式解決,**示例:

<?php

class play

public function join_game()

} $chi1=new play('dck1');

$chi2=new play('dck2');

$chi3=new play('dck3');

$chi1->join_game();

$chi2->join_game();

$chi3->join_game();

echo '一共有'.play::$num."小孩在玩遊戲";

?>

---------- 編譯結果 ----------

dck1加入遊戲是第1個加入的

dck2加入遊戲是第2個加入的

dck3加入遊戲是第3個加入的

一共有3小孩在玩遊戲

需求:當我們操作靜態變數的時候,我們可以考慮使用靜態方法,比如統計所有學生交的學費。在我們程式設計中,我們往往使用靜態方法去操作靜態變數

如何訪問靜態方法:

1、如果在類中訪問 有兩種方法 self::靜態方法名 , 類名::靜態方法名 

2、如果在類外訪問: 有兩種方法 類名::靜態方法名 , 物件名->類方法名 

注意:使用靜態方法可以不需要建立物件,可以直接訪問該靜態方法(類名::靜態方法名)

靜態方法特點:

1、靜態方法只能操作靜態變數

2、靜態方法不能操作非靜態變數

注意:普通的成員方法,既可以操作非靜態變數,也可以操作靜態變數

統計學費示例:

<?php

class school

public static function enter_school($free)

public static function getfree()

} //$bo=new school('cqq');

$bo1=new school('cqq1');

$bo2=new school('cqq2');

//$bo->enter_school(1000);

school::enter_school(1000); //可以不需要建立物件,直接訪問該靜態方法

$bo1->enter_school(2000);

$bo2->enter_school(10000);

$total=school::$free;

echo "學生一共繳納學費:".$total;

?>

---------- 編譯結果 ----------

學生一共繳納學費:13000

27 靜態變數

將新的靜態變數放進來 zend hash update cg active op array static variables,varname u.constant.value.str.val,varname u.constant.value.str.len 1,tmp,sizeof zval nu...

PHP類的靜態方法和靜態變數

在php中,訪問類的方法 變數有兩種方法 1.建立物件 object new class 然後使用 呼叫 object attribute function,前提是該變數 方法可訪問。2.直接呼叫類方法 變數 class attribute function,無論是靜態 非靜態都可以。但是有前提條件...

靜態變數和靜態成員函式

c 中的靜態成員變數和靜態成員函式。1 類靜態資料成員在編譯時建立並初始化 在該類的任何物件建立之前就存在,不屬於任何物件,而非靜態類成員變數則是屬於物件所有的。類靜態資料成員只有乙個拷貝,為所有此類的物件所共享。特別需要注意的一點是 靜態資料成員不能在類中初始化 對於常量靜態類變數有待考證,好像可...