程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 學習小筆記---大話PHP設計模式

學習小筆記---大話PHP設計模式

編輯:關於PHP編程

學習小筆記---大話PHP設計模式


PHPStorm IDE 開發字體選用:Source Code Pro , Courier New , Concolas     php命名空間 :可以解決 不同類中 相同名字方法的沖突 namespace test1; function test(){ }   自動載入  :        function  __autoload($class){    require  __DIR__.'/'$class.'.php'; }   spl_autoload_register(); 這個函數,可以允許多個 autoload 必須現在頭一行 例如 : spl_autoload_register('autoload1'); spl_autoload_register('autoload2'); function  autoload1($class){    require  __DIR__.'/'$class.'.php'; } function  autoload2($class){    require  __DIR__.'/'$class.'.php'; } require 以後 類名::方法名調用();  例如:Test1::test();Test2::test();   PSR-0規范   1 php的命名空間必須於絕對路徑一致 2 類名與文件名一致 的首字母必須大寫 3 除了路口文件外,其他".php"必須只有一個類不能有可執行代碼 例如:echo(); __DIR__       魔術常量 獲取當前文件的路徑 __FUNCTION__  魔術常量 獲取當前方法 __METHOD__    魔術常量 獲取當前類名和方法 BASEDIR       網站根目錄   spl 標准簡介   SplStack(); 先進後出  站式數據結構 $stack=new SplStack(); $stack->push("test1");   //先進 入站 $stack->push("test2");   //先進 echo $stack->pop();      //後出 出站 test2 echo  $stack->pop();     //後出      test1   SplQueue(); 先進先出  隊列式數據結構 $SplQueue=new SplQueue(); $SplQueue->enqueue("test1");   //先進 $SplQueue->enqueue("test2");   //先進 echo $SplQueue->dequeue();           //先出 test1 echo $SplQueue->dequeue();           //先出 test2   SplMinheap();   堆式數據結構 $SplMinheap=new SplMinheap(); $SplMinheap->insert('test1'); $SplMinheap->insert('test2'); echo $SplMinheap->extract();   test1 echo $SplMinheap->extract();   test2   $sqlFixedArray();    固定尺寸的數組 (固定長度) $array= new $sqlFixedArray(10);(括號中設置數據長度) $array['0']=1; $array['8']=8;   PHP鏈試 操作的實現  好處就是可以用一行代碼來實現很多的功能   $ob->where()->order()->limit()->select();   PHP 面向對象高級特性   PHP 魔術方法的使用  1 __get/__set               //將對象的首信進行接管 2 __call/__callStatic       //用來控制PHP的方法調用/控制類的靜態方法調用 3 __toString               //將一個PHP對象轉換成字符串 4 __invoke                 //將PHP當成函數來使用   打印出來的結果是 不管下標1-7有沒有值 都會打印出來 沒值的自動給個空值      PHPstorm 配置安裝 http://blog.csdn.net/ikscher/article/details/43672365   三種 基本設計模式   工廠模式 : 工廠方法或者類 來生成對像,而不是在代碼中直接new 代替new 好處 :就是萬一發生更改 只改一個工廠模式類就可以了   單例模式 : 使某個類的對象僅允許創建一次 好處 :無論需要多少個實例對象 實際上只連接了數據庫一次   注冊模式 : 全局共享交換對象  與工廠模式配合更好 好處 :全局共享交換對象   注冊樹與工廠模式共同試用 可以減少 對內存資源的浪費。因為調用的是同一個對象。還可以添加數據對   象映射模式 減少對數據庫的直接操作 操作的是類庫的屬性   適配器模式    讓不同的接口封裝成統一的API PHP 類是單繼承,也就是不支持多繼承,當一個類需要多個類的功能時,繼承就無能為力了,為此 PHP 引   入了類的接口技術。   如果一個抽象類裡面的所有方法都是抽象方法,且沒有聲明變量,而且接口裡面所有的成員都是 public    權限的,那麼這種特殊的抽象類就叫 接口 。   接口使用關鍵字 interface 來定義,並使用關鍵字 implements 來實現接口中的方法,且必須完全實現。    策略模式 將一組特定的行為和算法封裝成類,以適應某些特定的上下文環境,這種模式就是策略模式    例如判斷用戶的男女給予不同的需求  先寫出 男的需求 然後再寫出女的需求  根據傳輸的值 決定調用那個需求 而不再用繁瑣的判斷來實現 更改的話只要再寫一種需求就好了   數據對象影射模式  1 數據對象映射模式,是將對象和數據存儲映射起來,對一個對象的操作會映射為對數據儲存的操作   觀察者模式 當一個對象狀態發生改變時,依賴它的對象會全部接到通知 並自動更新 用處 當一個事件發   生的時候 與其關聯的都可以寫在觀察者類裡   原型模式 與工廠模式作用類似,都是用來創建對象的 與工廠模式的實現不同,原型模式是事先創建好一個原型對象,然後通過clone原型對象來創建新的對象。   這樣就免去了類創建時的初始化操作 原型模式適用於大對象的創建。創建一個大對象需要很大的開銷,如果每次new就會消耗很大,原型模式僅   需內存拷貝即可。 用處:比如建立的一個類對象中涉及到很多循環之類的 在new了以後 下次調用的時候 直接克隆這個對象    而不是繼續new   裝飾器模式 裝飾器模式(Decorator),可以動態的添加修改類的功能 一個類提供了一項功能,如果在修改   並添加了額外的功能,傳統的編輯模式,需要寫一個子類繼承它,並重新實現類的方法 使用裝飾器模式,僅需在運行時添加一個裝飾器對象即可實現,可以實現最大的靈活性。   迭代器模式 在不需要了解內部實現的前提下,遍歷一個聚合對象的內部元素  相比於傳統編程模式,迭代器模式可以隱藏遍歷元素的所需要的操作 <?php namespace test; class AllUser implements \Iterator {//調用迭代器接口 由PHP本身提供的        protected $ids;      protected $data = array();      protected $num  ;       function __construct(){         //實例化模型         //讀取數據庫       }     function valid(){//驗證當前是否還有下一個元素       }     function next(){//獲取下一個元素       }     function current(){ //獲取當前的元素       }     function rewind(){//重置整個迭代器       }     function key(){//獲取迭代器中的位置       }   }     代理模式  在客戶端與實體之間建立一個代理對象(proxy),客戶端對實體進行操作全部委派給代理對象,隱藏實體   的具體實現細節 proxy還可以與業務代碼分離,部署到另外的服務器,業務代碼中通過RPC來委派任務。  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved