php中static靜態(tài)變量、靜態(tài)方法

一、使用static靜態(tài)變量場景:


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、什么是靜態(tài)變量?
基本用法:
(1)在類中定義靜態(tài)變量:
訪問修飾符(如public)static $變量名;

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

<?php  

    Class Child {

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

        public function join_game() {
            
            //引用靜態(tài)變量
            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."人參加游戲";
?>
靜態(tài)變量小結(jié).png

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

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

在類外部訪問: 類名::類方法名 或者 對象名->類方法名
在類內(nèi)部訪問: 類名::類方法名 或者 self::類方法名

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

<?php

    class Student {

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

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

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

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

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

    echo "總學費是:".Student::getAllFee();
?>
靜態(tài)方法小結(jié).png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容