程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> php的靜態變量和靜態方法

php的靜態變量和靜態方法

編輯:PHP綜合

靜態變量也稱為類變量,靜態方法也稱為類方法.

簡單的說,靜態變量就是所有對象都共享的變量。靜態變量也稱為類變量,靜態方法也稱為類方法。

如何定義靜態變量

訪問修飾符 static 變量名;

如何訪問靜態變量:

(1)在類外部:類名::$類變量名

(2)在類內部:self::$類變量名或者::$類變量名

例:一群小孩在玩游戲,不時有新的小孩加入游戲。問:如何知道現在有多少小孩在玩游戲,用面向對象的思想來實現。

靜態變量與變通變量的區別:

(1)加上static稱為靜態變量或者類變量,否則稱為實例變量;

(2)類變量是與類相關的,公共的屬性;

(3)實例變量屬於每個對象個體的屬性;

(4)類變量可以通過 類名::類變量名 這種形式直接訪問。

方式一:使用全局變量

什麼是全局變量?在程序的任何位置都可以使用的變量,稱為全局變量。

<?php
//玩游戲人數的全局變量
global $global_nums;
$global_nums=0;
class Child{
public $name;
function __construct($name){
$this->name=$name;
}
public function join_game(){
//聲明使用全局變量
global $global_nums;
$global_nums+=1;
echo $this->name.'加入游戲了'."<br />";
}
//創建三個小孩
}
$child1=new Child("www.bianceng.cn");
$child1->join_game();
$child2=new Child("李四");
$child2->join_game();
$child3=new Child("王二");
$child3->join_game();
//看有多少人玩游戲
echo "<br /> 有".$global_nums."人玩游戲";
?>

方式二:使用靜態變量

<?php
class Child{
public $name;
public static $nums=0; //定義靜態變量
function __construct($name){
$this->name=$name;
}
public function join_game(){
self::$nums+=1;
echo $this->name.'加入游戲了'."<br />";
}
//創建三個小孩
}
$child1=new Child("www.bianceng.cn");
$child1->join_game();
$child2=new Child("李四");
$child2->join_game();
$child3=new Child("王二");
$child3->join_game();
//看有多少人玩游戲
echo "<br /> 有".Child::$nums."人玩游戲";
?>

php靜態方法

靜態方法也叫類方法,靜態方法是屬於所有對象實例的,形式如下:

訪問修飾符 static 方法名(){
語句;
}

當我們操作靜態變量時,可以考慮使用靜態方法

注意:類方法中不能訪問非靜態屬性(變量);普通方法既可以訪問靜態變量,也可以訪問非靜態變量。

類方法的使用:

在類外部:

類名::類方法名 或者 對象名->類方法名;

在類內部:

self::類方法名 或者 類名:類方法名

例:統計學費的總和

<?php
class Student{
public static $fee=0;
public $name;
//構造函數
function __construct($name){
$this->name=$name;
}
//入學
public static function enterSchool($ifee){
self::$fee+=$ifee;
}
//獲取總學費
public static function getFee(){
return self::$fee;
}
}
//創建學生
$stu1=new Student("張三");
//通過類名來調用靜態方法
Student::enterSchool(340); // 等價於$stu1->enterSchool(340);
$stu2=new Student("李四");
$stu2->enterSchool(600);
echo "總學費是:".Student::getFee();
?>

URL:http://www.bianceng.cn/webkf/PHP/201610/50459.htm

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