靜態屬性也就是說它的值保持其值,比如在類中例項化了n個物件,那麼你可以在建構函式中定義乙個靜態屬性來記住物件的個數。類中的靜態屬性和靜態變數差不多,只不過在類中似乎又多了乙個些使用上的限制罷了。讓我們看看一般的變數吧:
<?php<?phpfunction test() test();test();test();test();test();test();?>function test()
test();
test();
test();
test();
test();
test();
?>
很顯然這個函式的結果如下:
the number is:1但是如果你的程式是這樣:the number is:1
the number is:1
the number is:1
the number is:1
the number is:1
<?php<?phpfunctionfunction test()
test();
test();
test();
test();
test();
test();
?>
test() test();test();test();test();test();test();?>
我們只不過在變數名加了個static關鍵字而已,結果就大大的不同了:
the number is:11.static關鍵字可以用來修飾變數、方法(靜態方法)the number is:2
the number is:3
the number is:4
the number is:5
the number is:6
2.不經過例項化,就可以直接訪問類中static的屬性和static的方法。
3.static 的屬性和方法,只能訪問static的屬性和方法,不能訪問非靜態的屬性和方法。因為靜態屬性和方法被建立時,可能還沒有任何這個類的例項可以被呼叫。
4.在當前類中如果要訪問靜態成員可以使用self::關鍵字進行訪問。
5.在類中我們不能使用this關鍵來訪問靜態屬性,因為靜態屬性在物件可能還沒有例項化之前已經存在。
6.在類中靜態方法訪問靜態屬性,使用類名::靜態屬性名即可呼叫類中的靜態屬性。
<?phpclass test
public static function gettwomon()
}
echo "我現在餘額為:";
echo test :: getonemon();
echo "
";
echo "消費後,我的餘額為:";
echo test :: gettwomon();
?>
<?php在這個示例裡我們看到,使用了兩種方法來訪問靜態屬性$money的值:一種是前面都提到的類名::屬性值的形式,另外一種則是使用了self關鍵字。當然推薦使用self關鍵字這種方式,因為如果那天不高興了,我們修改的類名,那麼如果你使用了第一種方式,你是不是還得修改下呼叫它的方法呢,當然你得在同乙個類中,如果你是在子類中想呼叫父類的靜態屬性和方法,那就得使用parent::的方式了。class test
public static function gettwomon()
} echo "我現在餘額為:";echo test :: getonemon();echo "
"; echo "消費後,我的餘額為:";echo test :: gettwomon();
?>
再說一下
1:如果你想在靜態方法中呼叫其它靜態方法時,請使用方法是:類名::方法名的形式進行呼叫,還是那句,如果你在同乙個類進行這樣的呼叫,就使用selft關鍵字進行呼叫吧。要不然你得的程式可就得報錯了。2:php中靜態方法不能呼叫非靜態的屬性和非靜態方法,也不能使用類名::或者self::呼叫非靜態屬性。更不能使用$this->屬性名來呼叫,總之在靜態方法中只能呼叫靜態屬性或方法,非靜態的無法呼叫。
PHP OOP程式設計 靜態方法
當程式設計師對靜態屬性進行操作的時候可以定義靜態方法來操作靜態屬性 靜態方法的基本語法 class 類 通過類名在外部直接呼叫靜態方法 1.在類外部呼叫靜態方法 類名 靜態方法 物件 靜態方法 物件 靜態方法 2.在類的內部方法呼叫 self 靜態方法名 或者 類名 靜態方法名 this 也是 3....
PHP OOP 魔術方法
1 construct 建構函式,new乙個新物件時,自動呼叫 public function construct name 2 destruct 析構函式,當乙個物件被銷毀前,自動呼叫 function destruct 3 get 訪問類中私有屬性時,自動呼叫。傳遞讀取的屬性名,返回 this ...
靜態屬性靜態方法
靜態屬性用於儲存內的公有資料 靜態方法裡面只能訪問靜態屬性 靜態成員不需要例項化就可以訪問 類的內部可以通過self或者static關鍵字訪問自身的靜態成員 子內方法中可以通過parent關鍵字訪問父類的靜態成員 可以通過類的名稱在類定義外部訪問靜態成員 class human class nbap...