PHP高階程式設計 模式 框架與測試 學習筆記

2021-05-26 15:52:30 字數 1662 閱讀 1983

靜態成員,作用域為自身。

使用靜態,效率會高。是因為避免了例項化(會占用一小部分系統資源)

在使用::$變數 時,變數前要加「$」。是因為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開發大型專案時,就不得不考慮開發效率 開發規範 後期維護等問題,這時大家往往會選擇一款...