php框架中的設計模式,php框架選擇

本文目錄一覽:

php除了mvc還有什麼架構

1. Yii

Yii是一個基於組件的高性能的PHP的框架,用於開發大規模Web應用。Yii採用嚴格的OOP編寫,並有著完善的庫引用以及全面的教程。從MVC,DAO/ActiveRecord,widgets,caching,等級式RBAC,Web服務,到主體化,I18N和L10N,Yii提供了今日Web 2.0應用開發所需要的幾乎一切功能。而且這個框架的價格也並不太高。事實上,Yii是最有效率的PHP框架之一。

2. CodeIgniter

CodeIgniter是一個應用開發框架——一個為建立PHP網站的人們所設計的工具包。其目標在於快速的開發項目:它提供了豐富的庫組以完成常見的任務,以及簡單的界面,富有條理性的架構來訪問這些庫。使用CodeIgniter開發可以往項目中注入更多的創造力,因為它節省了大量編碼的時間。

3. CakePHP

CakePHP是一個快速開發PHP的框架,其中使用了一些常見的設計模式如ActiveRecord,Association Data Mapping,Front Controller以及MVC。其主要目標在於提供一個令任意水平的PHP開發人員都能夠快速開發web應用的框架,而且這個快速的實現並沒有犧牲項目的彈性。

4. PHPDevShell

PHPDevShell是一個開源(GNU/LGPL)的快速應用開發框架,用於開發不含Javascript的純PHP。它有一個完整的GUI管理員後台界面。其主要目標在於開發插件一類的基於管理的應用,其中速度、安全、穩定性及彈性是最優先考慮的重點。其設計形成了一個簡單的學習曲線,PHP開發者無需學習複雜的新術語。PHPDevShell的到來滿足了開發者們對於一個輕量級但是功能完善,可以無限制的進行配置的GUI的需求。

5. Akelos

Akelos PHP框架是一個基於MVC設計模式的web應用開發平台。基於良好的使用習慣,使用它可以完成如下任務:

◆方便的使用Ajax編寫views

◆通過控制器管理請求(request)及響應(response)

◆管理國際化的應用

◆使用簡單的協議與模型及資料庫通信

你的Akelos應用可以在大多數共享主機服務供應方上運行,因為Akelos對伺服器唯一的要求就是支持PHP。因此,Akelos PHP框架是理想的用於發布單獨web應用的框架,因為它不需要非標準PHP配置便能運行。

6. Symfony

Symfony是一個用於開發PHP5項目的web應用框架。

這個框架的目的在於加速web應用的開發以及維護,減少重複的編碼工作。

Symfony的系統需求不高,可以被輕易的安裝在任意設置上:你只需一個Unix或Windows,搭配一個安裝了PHP5的網路伺服器即可。它與差不多所有的資料庫兼容。Symfony的價位不高,相比主機上的花銷要低得多。

對於PHP開發者而言,使用Symfony是一件很自然的事,其學習曲線只有短短一天。乾淨的設計以及代碼可讀性將縮短開發時間。開發者可以將敏捷開發的原理(如DRY,KISS或XP等)應用在其中,將重點放在應用邏輯層面上,而不用花費大量時間在編寫沒完沒了的XML配置文件上。

Symfony旨在建立企業級的完善應用程序。也就是說,你擁有整個設置的控制權:從路徑結構到外部庫,幾乎一切都可以自定義。為了符合企業的開發條例,Symfony還綁定了一些額外的工具,以便於項目的測試,調試以及歸檔。

7. Prado

PRADO團隊由一些PRADO狂熱者組成,這些成員開發並推動PRADO框架以及相關項目的進行。

PRADO的靈感起源於Apache Tapestry。從04年開始,PRADO成為SourceForge上的開源項目之一。這個項目目前進展到了3.x版本。

8. Zend

作為PHP藝術及精神的延伸,Zend框架的基礎在於簡單,面向對象的最佳方法,方便企業的許可協議,以及經過反覆測試的快速代碼庫。Zend框架旨在建造更安全,更可靠的Web 2.0應用及web服務,並不斷從前沿廠商(如Google,Amazon,Yahoo,Flickr,StrikeIron和ProgrammableWeb等)的API那裡吸收精華。

9. ZooP

Zoop PHP框架,意為Zoop面向對象的PHP框架。

這是個穩定,可伸縮並可移植的框架。從誕生到現在的5年間,已經在不少產品開發中被使用。Zoop是一個快速,有效並乾淨的框架。它的伸縮性很好,你可以只安裝你需要的功能。

對代碼並不很熟悉的開發者也可以通過Zoop快速的開發安全的web應用。熟練的開發者則可以更加將Zoop的彈性利用到極致。

Zoop建議將display,logic以及數據層(MVC)分開使用。

Zoop由很多組件和項目集合而成,其中包括smarty和prototype AJAX框架,PEAR模塊等。高效的核心組件提供了很多你原本需要自己編碼來實現的功能。Zoop內置的糾錯功能可以通過配置實現生產環境下的錯誤日誌生成,這個錯誤日誌提供了很多信息,可讀性很高,可以更輕易的尋找並排除錯誤。

Zoop的一個特別之處在於其GuiControls,在PHP中是一個相當革新的想法。它提供了很多form widgets與驗證完整的集合到一起,並形成了一個可以輕鬆打造個性化GuiControls的框架。

10. QPHP

QPHP,意為快速PHP,它是一個與ASP.NET類似的MVC框架。基本上它是這樣一個情況:

◆整合了Java和C#的美感

◆除去了在其他PHP框架中使用的Perl形式的意義含糊的語言

◆大量基於OOP的概念

怎麼理解php中的設計模式

1、單例模式:PHP中的對象生存期間是從該腳本開始一直到該腳本結束為止,因此PHP的單例模式只是在一個頁面中(這裡可能包含很多其他頁面,不是狹義的單頁面)多次用到該對象時才會起作用,多次用到時不去重複的new對象(多個人做一個項目時,難免會碰到一次請求中多次實例一個對象的情況),將不會耗費不必要的資源(數據控連接操做效果很明顯),還有一點就是可以保證整個腳本中都是同一個對象,這種模式是怎麼實現的呢,他的實現有幾個要注意的點:

a. 首先就是要將__construct()方法定義為私有方法,這樣就不能通過new來得到一個新的實例了,單例模式不能在外部進行實例化,這能字自身內部進行實例化;

php中常見的幾種設計模式

狀態state模式是GOF23種模式中的一種,和命令模式一樣,也是一種行為模式。狀態模式和命令模式相當像,一樣是「介面—實現類」這種模式的應用,是面向介面編程原則的體現。

狀態模式屬於對象創建型模式,其意圖是允許一個對象在其內部狀態改變時改變它的行為,對象看起來似乎修改了他的類。比較常見的例子是在一個表示網路連接的類TCPConnection,一個TCPConnection對象的狀態處於若干不同的狀態之一:連接已經建立(Established),正在監聽,連接已經關閉(closed)。當一個TCPConnection對象收到其他對象的請求時,他根據自身的狀態作出不同的反應。

php設計模式介紹之迭代器模式

《PHP設計模式介紹》第八章 迭代器模式

類中的面向對象編程封裝應用邏輯 類 就是實例化的對象 每個單獨的對象都有一個特定的身份和狀態 單獨的對象是一種組織代碼的有用方法 但通常你會處理一組對象或者集合

屬性來自 SQL 查詢的一組數據就是一個集合 就像本書前面章節介紹的 Monopoly 遊戲示例的對象列表

集合不一定是均一的 圖形用戶界面框架中的 Window 對象可以收集任意數量的控制對象 - Menu Slider 和 Button 並且 集合的實現可以有多種方式 PHP 數字是一個集合 但也是一個散列表 一個鏈接列表 一個堆棧以及隊列

問題

如何操縱任意的對象集合?

解決方案

使用迭代器模式來提供對集合內容的統一存取

你可能沒有意識到這一點 但你每天都在使用迭代器模式 - 它潛藏在 PHP 的數組類型和各種數組操作函數中 (其實 給你一些固有類的數組的組合和一群用這些固有類工作的可變函數 你將不得不使用這些數組來處理對象集合 這是在 PHP 中的本地數組迭代

$test  =  array( one   o   three );$output  =  ; reset($test); do  {$output  =  current($test);}  while  (next($test));echo  $output;  //  produces  oneothree

reset() 函數將迭代重新轉到數組的開始 current() 返回當前元素的值 next() 則前進至數組中的下一個元素並返回新的 current() 值 當你超出數組的最後一個元素時 next() 返回 false 使用這些迭代方法 PHP 數組的內部實現就與你不相關了 迭代器結合了封裝和多態的面向對象程序設計原理 使用迭代器 你可以對集合中的對象進行操作 而無需專門了解集合如何顯現或者集合包含什麼(對象的種類) 迭代器提供了不同固定迭代實現的統一介面 它完全包含了如何操縱特定集合的詳細信息 包括顯示哪些項(過濾)及其顯示順序(排序)

讓我們創建一個簡單的對象 在數組中對它進行操作 (儘管該示例在 PHP 環境下 但迭代器並不特定於 PHP 雖然添加了較多的引用操作符 本章節中的大多數示例在 PHP 下也能夠運行) 對象 Lendable 表示諸如電影 相冊等媒體 它作為 Web 站點的一部分或服務 允許用戶瀏覽或將他們的媒體集合分享給其他用戶 (對        於該示例 請無需考慮其他方面 )讓我們開始下面對 Lendable 基礎設計的測試

//  PHP class  LendableTestCase  extends  UnitTestCase  {function  TestCheckout()  {$item  =  new  Lendable;$this assertFalse($item borrower);$item checkout( John );$this assertEqual( borrowed   $item status);$this assertEqual( John   $item borrower);}function  TestCheckin()  {$item  =  new  Lendable;$item checkout( John );$item checkin();$this assertEqual( library   $item status);$this assertFalse($item borrower);}}

要實現這一最初測試的需求 我們來創建一個帶有若干公共屬性和一些方法的類 來觸發這些屬性的值

class  Lendable  {public  $status  =  library ;public  $borrower  =  ;public  function  checkout($borrower)  {$this status  =  borrowed ;$this borrower  =  $borrower;}public  function  checkin()  {$this status  =  library ;$this borrower  =  ;}}

Lendable 是一個好的 普通的開端 讓我們將它擴展到諸如 DVD 或 CD 的磁軌項 媒體擴展了 Lendable 並且磁軌詳細記錄了特定媒體的詳細信息 包括項目的名稱 發布的年份以及項本身的類型

class  Media  extends  Lendable  {public  $name; public  $type; public  $year;public  function  __construct($name   $year   $type= dvd )  {$this name  =  $name;$this type  =  $type;$this year  =  (int)$year;}}

要使事情更加簡單 媒體有三個公共的實例變數 Media::name Media::year 和Media::type 構造函數採用了兩個參數 將第一個存儲在 $name 中 第二個存儲在 $year 中 構造函數還允許可選的第三個參數來指定類型(預設為dvd)

給定單獨的對象來操作 你現在可以創建一個容器來包含他們 Library 類似於常用的庫 Library 應該能夠添加 刪除和計算集合中的項 甚至 Library 還應該允許訪問集合(本章中的樣本代碼部分可看到示例)中的單一的項(對象)

我們開始構建 Library 的測試用例

class  LibraryTestCase  extends  UnitTestCase  {function  TestCount()  {$lib  =  new  Library;$this assertEqual(   $lib count());}}

它是滿足這一測試的簡單類

class  Library  {function  count()  {return  ;}}

繼續將一些有趣的功能添加到測試中

class  LibraryTestCase  extends  UnitTestCase  {function  TestCount()  {  /*    */  }function  TestAdd()  {$lib  =  new  Library;$lib add( one );$this assertEqual(   $lib count());}}

實現 add() 的簡單方法是建立在 PHP 靈活數組函數的基礎上 你可以將項添加到實例變數並使用 count() 來返回集合眾項的數量

class  Library  {protected  $collection  =  array();function  count()  {return  count($this collection);}function  add($item)  {$this collection[]  =  $item;}}

lishixinzhi/Article/program/net/201311/13092

深入了解php框架mvc設計模式的原理

現在的PHP框架太多了,如yii codeigniterlaravel thinkphp 一看文檔就一大堆英文資料,學也學不過來,可是上班時候公司要求你會這個,有的要求你會那個,看書上的理論又假大空,不知道在說什麼東西,看實際的例子代碼又太複雜龐大,所以今天就做一個簡單的小例子主要來給中級階段的php同學了解MVC的共同原理,了解這些原理自己也可以設計一個mvc 框架

先創建一個主流框架的目錄,包含控制器,數據模型,視圖顯示,3個文件夾,和一個入口文件

現在來設計一個路由地址,控制器名a=方法名param=參數名;然後寫在入口文件里的獲取路由的代碼,如下圖所示,這樣寫就能獲取不同的控制器名字和不同的方法,由入口文件獲取這些控制器和方法名,參數後就傳入指定的控制器方法名中

現在寫控制器的類和方法,便於接受入口文件傳入的值,控制器的作用就是協調調用數據處理和顯示樣式

現在來寫好數據處理類,數據處理主要是依靠mysql等和視圖顯示類,視圖主要就是把內容顯示出來,一般由smarty代替,數據處理文件名model.php,視圖顯示index.php

現在輸入控制器名a=方法名param=參數名 看他們都顯示出來了,一個簡單的框架就完成了,大家有機會自行擴展吧!

那麼控制器和視圖,數據的關係是什麼呢?一般具體中是從入口文件得到用戶輸入的控制器和方法名,參數,再傳給用戶指定的控制器,再由控制器(a)把參數傳給數據處理(m),m處理後返回給a,a 將得到的內容傳給視圖顯示(v),v再把他顯示出來。這只是一個簡單的MVC設計模式而已,大家可以在這上面設計出比較複雜的MVC模式

php中有哪些設計模式,舉例說明應用場景

PHP 一般有五種常見的設計模式

工廠模式

它具有創建對象的某些方法。可以使用工廠類創建對象,而不直接使用 new。

例如:

?php

interface IUser

{

function getName();

}

class User implements IUser

{

public function __construct( $id ) { }

public function getName()

{

return “Jack”;

}

}

class UserFactory

{

public static function Create( $id )

{

return new User( $id );

}

}

$uo = UserFactory::Create( 1 );

echo( $uo-getName().”\n” );

?

另外四種是:觀察者模式,單元素模式,命令鏈模式,策略模式。例子可以百度一搜。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/199804.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-05 14:01
下一篇 2024-12-05 14:01

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Ojlat:一款快速開發Web應用程序的框架

    Ojlat是一款用於快速開發Web應用程序的框架。它的主要特點是高效、易用、可擴展且功能齊全。通過Ojlat,開發人員可以輕鬆地構建出高質量的Web應用程序。本文將從多個方面對Oj…

    編程 2025-04-29
  • Zlios——一個多功能的開發框架

    你是否在開發過程中常常遇到同樣的問題,需要不斷去尋找解決方案?你是否想要一個多功能、易於使用的開發框架來解決這些問題?那麼,Zlios就是你需要的框架。 一、簡介 Zlios是一個…

    編程 2025-04-29
  • agavi開發框架

    Agavi是一個基於MVC模式的Web應用程序開發框架,以REST和面向資源的設計為核心思想。本文章將從Agavi的概念、優點、使用方法和實例等方面進行詳細介紹。 一、概念 Aga…

    編程 2025-04-29
  • Python unittest框架用法介紹

    Python unittest框架是Python自帶的一種測試框架,可以用來編寫並運行測試用例。在本文中,我們將從以下幾個方面詳細介紹Python unittest框架的使用方法和…

    編程 2025-04-29
  • com.alipay.sofa.bolt框架

    com.alipay.sofa.bolt框架是一款高性能、輕量級、可擴展的RPC框架。其廣泛被應用於阿里集團內部服務以及阿里雲上的服務。該框架通過NIO支持高並發,同時還內置了多種…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • Django框架:從簡介到項目實戰

    本文將從Django的介紹,以及如何搭建Django環境開始,逐步深入到Django模型、視圖、模板、表單,最後通過一個小型項目實戰,進行綜合性的應用,讓讀者獲得更深入的學習。 一…

    編程 2025-04-28
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • 手機安全模式怎麼解除?

    安全模式是一種手機自身的保護模式,它會禁用第三方應用程序並使用僅限基本系統功能。但有時候,安全模式會使你無法使用手機上的一些重要功能。如果你想解除手機安全模式,可以嘗試以下方法: …

    編程 2025-04-28

發表回復

登錄後才能評論