靜態成員,作用域為自身。
使用靜態,效率會高。是因為避免了例項化(會占用一小部分系統資源)
在使用::$變數 時,變數前要加「$」。是因為php當前不支援動態的靜態變數的使用,也就是說,不支援可變的靜態變數。
不用$時,訪問的是類中的某個常量
class myobject
echo myobject::$myvariable;
在php中使用作用域限定操作符時,用變數作為類的名稱是不允許的。eg: $classnameinvar::somemethod()
單列模式和工廠模式
單列模式被當作職責模式,(是因為它將建立物件的控制權委託到乙個單一的訪問點上。)它用來在應用程式中建立乙個單一的功能訪問點。在任何時候,應用程式中都只會有這個類僅有的乙個例項存在。
必須擁有:
1. 乙個建構函式,且必須被標記為private
2. 乙個儲存類的例項的靜態成員變數
3. 乙個訪問這個例項的公共的靜態方法
單列類不能在其他類中直接例項化。只能被其自身例項化。
class database
private __clone() {};
public static function getinstance()
return self::$_instance;
} public function query($sql)
}
工廠模式在多型性設計中非常重要。是指包含了乙個專門用來建立其他物件的方法的類。
它允許動態地替換類、修改配置,並且
異常表示由try、catch和throw等語句和exception類組成的整個處理機制
try 用來定義檢測異常的**塊
catch 處理異常時的處理方法 catch ( exception $e)
throw 語句是用來觸發異常發生並且在這點上中斷處理過程的。必須給它傳遞乙個exception
#debug_backtrace()
spl序列化
<?php
error_reporting(e_all);
class base implements serializable
public function serialize()
public function unserialize($serialized)
public function printme()
public function ctest($test)
}class extender extends base
public function serialize()
public function unserialize( $serialized )
}$instance = new extender();
$serialized = serialize($instance);
echo $serialized . "\n";
$restored = unserialize($serialized);
echo '';
$restored->printme();
$restored->ctest('xxoo');
用部落格學php高階程式設計 php正規表示式
php有兩種正規表示式 1.ereg裡面是不需要也不能使用分隔符和修飾符的.2.在正則裡面一般是除了換行符以外的全部字元,但是在ereg裡面的 是任意字元,即包括換行符 如果在preg裡面希望 能夠包括換行符,可以在修飾符中加上 s 3.ereg預設使用貪婪模式,並且不能修改.4.preg的速度要遠...
《PHP物件 模式與實踐》之高階特性
高階特性 包括 1.靜態方法和屬性 通過類而不是物件來訪問資料和功能 2.抽象類和介面 設計,實現分離 3.錯誤處理 異常 4.final類和方法 限制繼承 5.自動委託 6.析構方法 物件銷毀前的清理工作 7.轉殖物件 建立物件的副本 8.把物件解析成字串 ps,學會從記憶體的角度看 想象計算機的...
PHP大型框架如何擺脫學與用的魔咒
php從誕生以來就受到廣大程式設計愛好者的喜歡,成為中小站長的好幫手,並培養了大量的php程式設計人員,但是隨著php的應用越發廣泛,很多時候已不限於從事中小 的應用,一些大型php專案也屢見不鮮。當我們選擇php開發大型專案時,就不得不考慮開發效率 開發規範 後期維護等問題,這時大家往往會選擇一款...