Time of Update: 2016-07-29
1.當將所有執行個體設為null,php會自動清除對象的引用。 2.建構子:__construct() 清除對象時自動執行的方法:__destruct() 也可以設定手動清除對象的方法:destroy或者clean_up 3.對象中的三種變數範圍:public、private和protected。 4.對象中的常量屬性可以使用const關鍵字,然後在對象外部以“對象名::屬性名稱”的格式引用,在對象內部以“self::屬性名稱”的格式引用。 5.在整個對象所有執行個體中通用的屬性,就是靜態屬性,
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 Mediator { abstract public function send($message,$colleague); } abstract class Colleague { private $_mediator = null; public function
Time of Update: 2016-07-29
但是如果在utf-8編碼下,一個漢字是佔3個字元長度的,比如字串$str=”你好啊!!”; 如果你用strlen函數來判斷,長度是11,正好超過了varchar的長度,但實際上確不是這樣,如果直接到phpmyadmin裡面執行insert語句,這條字串是可以插入的! 對於資料庫來說,它的長度是5,那麼我們如何用PHP來得到這個長度呢?使用iconv_strlen()函數! echo iconv_strlen($str,'utf-8′);
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
array getimagesize ( string $filename [, array &$imageinfo ] ) 取得映像大小 resource imagecreatetruecolor ( int $x_size , int $y_size ) 建立一個真彩色映像 resource imagecreatefromjpeg ( string $filename ) 從 JPEG 檔案或 URL 建立一映像 bool imagecopyresized ( resource
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
這裡的方法是利用fputcsv寫CSV檔案的方法,直接向瀏覽器輸出Excel檔案。 複製代碼 代碼如下:// 輸出Excel檔案頭,可把user.csv換成你要的檔案名稱 header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="user.csv"'); header('Cache-Control: max-age=0'); //
Time of Update: 2016-07-29
1.include_path的意義 當時候函數include(),require(),fopen_with_path()函數來尋找檔案時候.在不設定include_path的情況下,這些函數開啟檔案時候預設的是以web根目錄去尋找.當設定include_path以後,這些php函數就會先在指定的include_path目錄下面去搜尋尋找.
Time of Update: 2016-07-29
複製代碼 代碼如下:$mimetypes = array( 'ez' => 'application/andrew-inset', 'hqx' => 'application/mac-binhex40', 'cpt' => 'application/mac-compactpro', 'doc' => 'application/msword', 'bin' => 'application/octet-stream', 'dms' => 'application/octet-stream',
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.視圖分離