7.7.2 static關鍵字的使用1
static關鍵字表示靜態的意思, 用于修飾類的成員屬性和成員方法(即為靜態屬性和靜態方法)。
類中的靜態屬性和靜態方法不用實例化(new)就可以直接使用類名訪問。格式:
類::$靜態屬性 類::靜態方法
在類的方法中,不能用this來引用靜態變量或靜態方法,而需要用self來引用。格式:
self::$靜態屬性 self::靜態方法
靜態方法中不可以使用非靜態的內容。就是不讓使用$this。
在一個類的方法中若沒有出現$this的調用,默認此方法為靜態方法。
靜態屬性是共享的。也就是new很多對象也是共用一個屬性。
test.php
<?php
/*
* static 可以修飾屬性和方法, 不能修飾類
*
*
* 1. 使用static 修飾成員屬性, 存在內存的初使化表態段.
* 2. 可以被所有同一個類的對象共用
* 3. 第一個用到類(類名第一次出現), 類在加載到內存時, 就已經將靜態的成員加到了內存
*
* 對象 -> 成員
* 類 :: 成員
*
* 4. 靜態的成員一要使用類來訪問,
*
*
*/
class Person {
public $name;
public $age;
public $sex;
public static $country = "中國";
function __construct($name, $age, $sex) {
$this->name = $name;
$this->age = $age;
$this->sex = $sex;
}
public function say() {
echo "我的名子是:{$this->name},我的年齡是:{$this->age},我的性別是:{$this->sex}。<br>";
}
function eat() {
}
function run() {
}
}
$p = new Person("zs", 30, "aa");
echo $p->country;
/*
$p1 = new Person("zhangsna1", 10, "男");
$p2 = new Person("zhangsna2", 10, "女");
$p3 = new Person("zhangsna3", 11, "男");
$p4 = new Person("zhangsna4", 12, "男");
$p5 = new Person("zhangsna5", 13, "男");
*/