Time of Update: 2016-07-29
複製代碼 代碼如下:/** * 橋接模式 * * 將抽象部份與它實現部分分離,使用它們都可以有獨立的變化 */ abstract class Implementor { abstract public function operation(); } class ConcreteImplementorA extends Implementor { public function operation() { echo "ConcreteImplementorA Operation"; } }
Time of Update: 2016-07-29
複製代碼 代碼如下:/** * Factory 方法模式 * * 定義一個用於建立對象的介面,讓子類決定將哪一個類執行個體化,使用一個類的執行個體化延遲到其子類 */ /* class DBFactory { public static function create($type) { swtich($type) { case "Mysql": return new MysqlDB(); break; case "Postgre": return new PostgreDB(); break;
Time of Update: 2016-07-29
享元模式英文稱為“Flyweight Pattern”,我非常感謝將Flyweight Pattern翻譯成享元模式的那位強人,因為這個詞將這個模式使用的方式明白得表示了出來;如果翻譯成為羽量級模式或者蠅量級模式等等,雖然可以含蓄的表現出使用此模式達到的目的,但是還是沒有抓住此模式的關鍵。 享元模式的定義為:採用一個共用來避免大量擁有相同內容對象的開銷。這種開銷中最常見、直觀的就是記憶體的損耗。享元模式以共用的方式高效的支援大量的細粒度對象。
Time of Update: 2016-07-29
複製代碼 代碼如下:/** * 策略模式(Strategy.php) * * 定義一系列演算法,把它們一個個封裝起來,並且使它們可相互替換,使用得演算法的變化可獨立於使用它的客戶 * */ // ---以下是一系列演算法的封閉---- interface CacheTable { public function get($key); public function set($key,$value); public function del($key); } // 不使用緩衝 class
Time of Update: 2016-07-29
複製代碼 代碼如下:/** * 原型模式 * * 用原型執行個體指定建立對象的種類.並且通過拷貝這個原型來建立新的對象 * */ abstract class Prototype { private $_id = null; public function __construct($id) { $this->_id = $id; } public function getID() { return $this->_id; } public function __clone() // magic
Time of Update: 2016-07-29
首先,確認伺服器硬體是否足夠支援當前的流量。 普通的P4伺服器一般最多能支援每天10萬獨立IP,如果訪問量比這個還要大, 那麼必須首先配置一台更高效能的專用伺服器才能解決問題 ,否則怎麼最佳化都不可能徹底解決效能問題。 其次,最佳化資料庫訪問。 前台實現完全的靜態化當然最好,可以完全不用訪問資料庫,不過對於頻繁更新的網站, 靜態化往往不能滿足某些功能。 緩衝技術就是另一個解決方案,就是將動態資料儲存到快取檔案中,動態網頁直接調用
Time of Update: 2016-07-29
例如部落格的展示窗 複製代碼 代碼如下:/********************************************** * Filename : img.php * Author : freemouse * web : www.cnphp.info * email :freemouse1981@gmail.com * Date : 2010/12/27 * Usage: * * ***********************************************/
Time of Update: 2016-07-29
URL跳轉代碼 1.代碼: 如儲存為aaa.php,可以實現aaa.php?url=www.baidu.com跳轉到百度的效果. 這個簡單的調用了預設的$_GET變數.以及php預設跳轉Location: 2.執行個體升級:增加if迴圈 代碼: 複製代碼 代碼如下:$url=$_GET["url"]; if (strlen($url >=3)){ header("Location:"."http://".$url); } ?> URL轉向頁
Time of Update: 2016-07-29
因此,我們主要解決的思路是效驗session ID的有效性. 以下為引用的內容: 複製代碼 代碼如下:if(!isset($_SESSION['user_agent'])){ $_SESSION['user_agent'] =$_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT']; } /* 如果使用者session ID是偽造 */ elseif ($_SESSION['user_agent'] != $_SERVER['REMOTE_ADDR'
Time of Update: 2016-07-29
複製代碼 代碼如下:#!/usr/local/bin/php -q author:freemouse // 下面是說明. print ("本程式用於合并2張 640x480大小的.\n"); print ("圖片,並將其轉化為一張 400x300 大小的圖片\n"); print ("需要指定存放合成前圖片(a.jpg,b.jpg)的預設目錄\n"); print ("產生的圖片將會儲存為c.jpg\n"); //預設目錄,自己編輯吧^_^
Time of Update: 2016-07-29
你總不可能對每一個這樣的特殊字元都人工進行轉義,何況你通常處理的都是表單自動認可的內容。 所以,應該使用mysql_real_escape_string函數: mysql_real_escape_string — 轉義 SQL 陳述式中使用的字串中的特殊字元,並考慮到串連的當前字元集。 但是注意:該函數並不轉義 % 和 _。另外,最好不要對整條sql語句使用該函數,而是只轉義傳入sql語句的字串參數,否則會發生意想不到的結果。 指令碼舉例: 複製代碼 代碼如下:$item = "Zak's
Time of Update: 2016-07-29
1.fopen實現代碼:複製代碼 代碼如下:$handle = fopen ("http://www.example.com/", "rb"); $contents = ""; while (!feof($handle)) { $contents .= fread($handle, 8192); } fclose($handle); ?> 複製代碼 代碼如下:// 對 PHP 5 及更高版本 $handle = fopen("http://www.example.com/", "rb");
Time of Update: 2016-07-29
/** * 命令模式 * * 將一個請求封裝為一個對象從而使你可用不同的請求對客戶進行參數化,對請求排除或記錄請求日誌,以及支援可取消的操作 */ interface Command { public function execute(); } class Invoker { private $_command = array(); public function setCommand($command) { $this->_command[] = $command; } public
Time of Update: 2016-07-29
這貨是從 Martin 大神的《公司專屬應用程式架構模式》中學到的,輔助 PHP 動態語言的特性,可以比 Java 輕鬆很多的實現消極式載入(LazyLoad)。基本原理是通過一個虛代理(Virtual Proxy)做預留位置,一旦訪問代理對象的某成員(方法或屬性),載入就被觸發。 不過我實現的這個版本有局限性: 只適用於對象,無法代理數組等基礎資料型別 (Elementary Data Type)(需要用 ArrayObject 一類的內建對象封裝)
Time of Update: 2016-07-29
通過memcached的getMulti函數來批量擷取如下15個ID的值。 31639,33878,177410,9735,589,12076,25953,22447,15368,15358,33853,26658,26659,12477,15366 $md->getMulti($arr_id); 返回的順序: line_31639,line_33878,line_177410,line_9735,line_589,line_12076,line_25953,line_22447,line_15
Time of Update: 2016-07-29
複製代碼 代碼如下:class Controller_Jobs extends Controller_Base{ public function before(){ parent::before(); if(Request::$protocol != "cli"){ die("Only cli allowed!\n"); } } public function after(){ parent::after(); //do some cleaning tasks } private
Time of Update: 2016-07-29
複製代碼 代碼如下:/* * 1.對象中成員的訪問(在一個對象的內部方法中,去訪問本對軒昂中的其他方法和成員屬性) * 2.在對象中的方法中都預設有一個$this關鍵字,這個關鍵字代表調用這個方法的對象 * * 構造方法 * * 1.是對象建立完成後,“第一個”“自動調用”的方法 * * 2.構造方法的定義,方法名是一個固定的, * 在php4中:和類名相同的方法就是構造方法 * 在php5中:構造方法選擇使用 魔術方法__construct() 所有類中聲明構造方法都使用這個名稱 *
Time of Update: 2016-07-29
複製代碼 代碼如下:/* PHP物件導向的程式設計 * * PHP5 * * 數組和對象:都屬於PHP的複合類型(一個變數可以儲存多個單元) * * 對象比數組更強大,不僅可以儲存多個資料,還可以將函數存在對象中 * * 對象的三大特性:封裝、繼承、多態 * * 物件導向編程(oop) //符合軟體工程中的 重用性 靈活性 擴充性 * * 物件導向和面向過程之間的區別 * * 最小的單位:函數 //面向過程 * 最小的單位:對象 //物件導向 * * 什麼是對象
Time of Update: 2016-07-29
複製代碼 代碼如下:/** * 建造者模式 * * 將一個複雜物件的構建與它的表示分離,使用同樣的構建過程可以建立不同的表示 */ class Product { public $_type = null; public $_size = null; public $_color = null; public function setType($type) { echo "set product type"; $this->_type = $type; } public function
Time of Update: 2016-07-29
使用mvc開發模式是為了什嗎?? MVC是一個設計模式,它強制性的使應用程式的輸入、處理和輸出分開。使用MVC應用程式被分成三個核心組件:模型、視圖、控制器。它們各自處理自己的任務。 我們有必要嚴格區分mvc的三層模式模式嗎? m與c的跨界使用更有利於快速開發。 在我使用的架構中 m與c可以跨界使用,並不嚴格區分。有時候很想直接在c裡處理m的事,因為業務的資料處理並不多見,也許只有一次。 這樣在m裡面寫個函數, 再用c調用,變得複雜,這與php快速開發理念相悖。 我們需要的什嗎? 1.視圖分離