php中static靜態變量、靜態方法

一、使用static靜態變量場景:


stadic使用場景.png

1、什么是全局變量?
在程序中都可以使用的變量稱為全局變量。

<?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++;
            echo $this -> name."加入游戲<br/>";
        }
    }

    $child1 = new Child("lizzy");
    $child1 -> join_game();
    $child2 = new Child("zxm");
    $child2 -> join_game();
    $child3 = new Child("hahha");
    $child3 -> join_game();

    echo "共".$global_nums."人參加游戲";
?>

2、什么是靜態變量?
基本用法:
(1)在類中定義靜態變量:
訪問修飾符(如public)static $變量名;

(2)如何訪問靜態變量:
a、如果在類中訪問,有兩種方法:
self::靜態變量名; 或者 類名::靜態變量名;
b、如果再類外訪問:只有一種方法,
類名::$靜態變量名;
注意:php中靜態變量不能用this訪問,不能用對象去訪問。

<?php  

    Class Child {

        public $name;
        //定義并初始化一個靜態變量
        public static $nums=0;
        function __construct($name) {
            $this -> name = $name;
        }

        public function join_game() {
            
            //引用靜態變量
            self::$nums++;
            echo $this -> name."加入游戲<br/>";
        }
    }

    $child1 = new Child("lizzy");
    $child1 -> join_game();
    $child2 = new Child("zxm");
    $child2 -> join_game();
    $child3 = new Child("hahha");
    $child3 -> join_game();

    echo "共".Child::$nums."人參加游戲";
?>
靜態變量小結.png

二、靜態方法:
靜態方法也叫類方法,靜態方法是屬于所有對象實例的,形式如下:訪問修飾符(如public) static function 方法名() { }

注意:
1、 靜態方法中不能訪問非靜態屬性(變量),也就是static方法中不能用this 訪問,無法識別this具體是哪個。
2、普通的成員方法,既可以操作非靜態變量,也可以操作靜態變量。

在類外部訪問: 類名::類方法名 或者 對象名->類方法名
在類內部訪問: 類名::類方法名 或者 self::類方法名

需求:當我們操作靜態變量的時候,可以考慮使用靜態方法,比如統計所有學生交的學費。

<?php

    class Student {

        public static $fee;
        public $name;
        //構造函數
        function __construct($name) {
            $this -> name = $name;
        }

        public static function startSchool($inputFee) {
            self::$fee += $inputFee;
        }

        //獲取總學費
        public static function getAllFee() {
            return self::$fee;
        }
    }

    //1、通過類名調用靜態方法
    // Student::startSchool(340);
    //2、通過對象調用靜態方法
    $stu1 = new Student("lizzy");
    $stu1 -> startSchool(340);

    $stu2 = new Student("zxm");
    $stu2 -> startSchool(200);

    echo "總學費是:".Student::getAllFee();
?>
靜態方法小結.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • 一:java概述:1,JDK:Java Development Kit,java的開發和運行環境,java的開發工...
    ZaneInTheSun閱讀 2,687評論 0 11
  • 1 面向對象No6 面向對象 OO Object Oriented 編程時以對象為單元,封裝數據和邏輯,以此提...
    征程_Journey閱讀 1,183評論 0 2
  • 第一天 1.關鍵字 在Java中關鍵字是不能設置成為變量名、方法名、包名、類名的! 2.標識符 程序員自己定義的名...
    炙冰閱讀 537評論 0 0
  • 身邊有很多朋友喝完酒之后臉會很紅, 有的人說臉紅的人缺解酒酶, 喝了會酒精中毒; 有的人說臉紅的人其實更能喝, 因...
    c8171f93259b閱讀 1,123評論 0 0