
靜態(tài)變量,靜態(tài)屬性,靜態(tài)方法。
靜態(tài)變量:當你聲明一個普通局部變量,在函數(shù)中調(diào)用時會在內(nèi)存中申請一塊空間,函數(shù)結(jié)束后,返回一個值,空間被清除。而當你申明一個靜態(tài)變量時,將這個變量在函數(shù)中運算改變以后,這個靜態(tài)變量不會從內(nèi)存中消失,保留的值是進行運算改變后的值。靜態(tài)變量應(yīng)用范圍比較廣,可以避免多次鏈接。下面有一個thinkphp中的C函數(shù)的例子。
public function C($k,$v){
??? static $cfg = array();
??? $cfg[$k] = $v;
??? return $cfg;
}
靜態(tài)屬性,靜態(tài)方法,不依賴于對象即可調(diào)用某個類里面的屬性或方法,這個類里面的屬性和方法前加static。反正我是沒用過其他的,其中一個單例模式 還是有用到。傳說中可以用作接口,還有說直接調(diào)用類里面的方法和屬性,比實例化一個后再調(diào)用速度更快的,在我看來這種速度比較一文不值。
單例模式的意義在于控制對象只能被實例化一次,并且是被自身new,防止外部new.
class link{
??? protected static $link = null;
??? protected function __construct(){?? //被自身調(diào)用的時候會觸發(fā)
??????? $this->link = mysql_connect('localhost','root','');
??? }
??? private fucntion __clone(){
??? }??? //外部克隆自動觸發(fā)這個方法,這個方法是私有,會報錯。
??? public static function getlink(){?? //沒有鏈接資源就new自身創(chuàng)建一個資源,已經(jīng)有的話直接返回。
??????? if($link==null){
??????????? self :: link = new self();
??????? }
??????? return self::link;
??? }
這里用到了靜態(tài)方法和靜態(tài)變量,靜態(tài)方法不用再被new了,直接調(diào)用link::getlink();就會返回一個鏈接資源,保存起來返回的值就可以直接使用了。其實要實現(xiàn)單例模式,可以偷偷懶做個全局變量哦。