導航:首頁 > 編程語言 > phpmvcsmarty框架

phpmvcsmarty框架

發布時間:2023-05-11 11:00:05

1. mvc框架怎麼用

MVC (Model View Controller)本來是存在於Desktop程序中的,M是指數據模型,V是指用戶界面,C則是控制器。使用MVC的目的是將M和V實現代碼分離,從而使同一個程序可以使用不同的表現形式。比如一批統計數據你可以分別用柱狀圖、餅圖來表示。C存在的目的則是確保M和V的同步,一旦M改變,V應該同步更新。 模型-視圖-控制器(MVC)是Xerox PARC在八十年代為編程語言Smalltalk-80發明的一種軟體設計模式,至今已被廣泛使用。最近幾年被推薦為Sun公司J2EE平台的設計模式,並且受到越來越多的使用 ColdFusion 和 php 的開發者的歡迎。模型-視圖-控制器模式是一個有用的工具箱,它有很多好處,但也有一些缺點。
MVC是一個框架模式,它強制性的使應用程序的輸謹毀入、處理和輸出分開。使用MVC應用程序被分成三個核心部件:模型、視圖、控制器。它們各自旦大處理自己的任務。
視圖
視圖是用戶看到並與之交互的界面。對老式的Web應用程序來說,視圖就是由HTML元素組成的界面,在新式的Web應用程序中,HTML依舊在視圖中扮演著重要的角色,但一些新的技術已層出不窮,它們包括Macromedia Flash和像XHTML,XML/XSL,WML等一些標識語言和Web services. 如何處理應用程序的界面變得越來越有挑戰性。MVC一個大的好處是它能為你的應用程序處理很多不同的視圖。在視圖中其實沒有真正的處理發生,不管這些數據是聯機存儲的還是一個雇員列表,作為視圖來講,它只是作為一種輸出數據並允許用戶操縱的方式。
模型
模型表示企業數據和業務規則。在MVC的三個部件中,模型擁有最多的處理任務。例如它可能用像EJBs和ColdFusion Components這樣的構件對象來處理資料庫。被模型返回的數據是中立的,就是說模型與數據格式無關,這樣一個模型能為多個視圖提供數據。由於應用於模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復性。
控制器
控制器接受用戶的輸入並調用模型和視圖去完成用戶的需求。所以當單擊Web頁面中的超鏈接和發送HTML表單時,控制器本身不輸出任何東西和做任何處理。它只是接收請求並決定調用哪個模型構件去處理請求,然後確定用哪個視圖來顯示模型處理返回的數據。 現在我們總結MVC的處理過程,首先控制器接收用戶的請求,並決定應該調用哪個模型來進行處理,然後模型用業務邏輯來處理用戶的請求並返回數據,最後控制器用相應的視圖格式化模型返回的數據,並通過表示層呈現給用戶。編輯本段框架模式和設計模式的區別有很多程序員往往把框架模式和設計模式混淆,認為MVC是一種設計模式。實際上它們完全是不同的概念。[1] 框架、設計模式這兩個概念總容易被混淆,其實它們之間還是有區別的。構件通常是代碼重用,而設計模式是設計重用,框架則介於兩者之間,部分代碼重用,部分設計重用,有時分析也可重用。在軟體生產中有三種級別的重用:內部重用,即在同一應用中能公共使用的抽象塊;代碼重用,即將通用模塊組合成庫或工具集,以便在多個應用和領域都能使用;應用框架的重用,即為專用領域提供通用的或現成的基礎結構,以獲得最高級別的重用性。 框架與設計模式雖然相似,但卻有著根本的不同。設計模式是對在某種環境中反復出現的問題以及解決該問題的方案的描述,它比框架更抽象;框架可以用代碼表示,也能直接執行或復用,而對模式而言只有實例才能用代碼表示;設計模式是比框架更小的元素,一個框架中往往含有一個或多個設計模式,框架祥遲備總是針對某一特定應用領域,但同一模式卻可適用於各種應用。可以說,框架是軟體,而設計模式是軟體的知識。 框架模式有哪些?MVC、MTV、MVP等等; 框架有哪些?C++語言的QT、MFC、gtk,Java語言的SSH,php語言的 smarty(MVC模式),python語言的django(MTV模式)等等 設計模式有哪些?工廠模式、適配器模式、策略模式等等 簡而言之:框架模式是大智慧,用來對軟體設計進行分工;設計模式是小技巧,對具體問題提出解決方案,以提高代碼復用率、降低耦合度。編輯本段MVC框架模式的優點大部分Web應用程序都是用像ASP,PHP,或者CFML這樣的過程化語言來創建的。它們將像資料庫查詢語句這樣的數據層代碼和像HTML這樣的表示層代碼混在一起。經驗比較豐富的開發者會將數據從表示層分離開來,但這通常不是很容易做到的,它需要精心的計劃和不斷的嘗試。MVC從根本上強制性的將它們分開。盡管構造MVC應用程序需要一些額外的工作,但是它給我們帶來的好處是無庸質疑的。 首先,最重要的一點是多個視圖能共享一個模型,正如我所提及的,現在需要用越來越多的方式來訪問你的應用程序。對此,其中一個解決之道是使用MVC,無論你的用戶想要Flash界面或是 WAP 界面;用一個模型就能處理它們。由於你已經將數據和業務規則從表示層分開,所以你可以最大化的重用你的代碼了。 由於模型返回的數據沒有進行格式化,所以同樣的構件能被不同界面使用。例如,很多數據可能用HTML來表示,但是它們也有可能要用Macromedia Flash和WAP來表示。模型也有狀態管理和數據持久性處理的功能,例如,基於會話的購物車和電子商務過程也能被Flash網站或者無線聯網的應用程序所重用。 因為模型是自包含的,並且與控制器和視圖相分離,所以很容易改變你的應用程序的數據層和業務規則。如果你想把你的資料庫從MySQL移植到Oracle,或者改變你的基於RDBMS數據源到LDAP,只需改變你的模型即可。一旦你正確的實現了模型,不管你的數據來自資料庫或是LDAP伺服器,視圖將會正確的顯示它們。由於運用MVC的應用程序的三個部件是相互對立,改變其中一個不會影響其它兩個,所以依據這種設計思想你能構造良好的松耦合的構件。 對我來說,控制器的也提供了一個好處,就是可以使用控制器來聯接不同的模型和視圖去完成用戶的需求,這樣控制器可以為構造應用程序提供強有力的手段。給定一些可重用的模型和視圖,控制器可以根據用戶的需求選擇模型進行處理,然後選擇視圖將處理結果顯示給用戶。編輯本段MVC框架模式的缺點MVC模式的缺點是由於它沒有明確的定義,所以完全理解MVC模式並不是很容易。使用MVC模式需要精心的計劃,由於它的內部原理比較復雜,所以需要花費一些時間去思考。開發一個MVC模式架構的工程,將不得不花費相當可觀的時間去考慮如何將MVC模式運用到應用程序中,同時由於模型和視圖要嚴格的分離,這樣也給調試應用程序帶來了一定的困難。每個構件在使用之前都需要經過徹底的測試。另外由於MVC模式將一個應用程序分成了三個部件,所以這意味著同一個工程將包含比以前更多的文件。 過去MVC模式並不適合小型甚至中等規模的應用程序,這樣會帶來額外的工作量,增加應用的復雜性。但現在多數軟體設計框架,能直接快速提供MVC骨架,供中小型應用程序開發,此問題不再存在。對於開發存在大量用戶界面,並且邏輯復雜的大型應用程序,JAVA將會使軟體在健壯性、代碼重用和結構方面上一個新的台階。盡管在最初構建MVC模式框架時會花費一定的工作量,但從長遠的角度來看,它會大大提高後期軟體開發的效率

2. php除了mvc還有什麼架構

1.Yii

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

2.CodeIgniter

3.CakePHP

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

4.PHPDevShell

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

5.Akelos

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

◆方便的使用Ajax編寫views

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

◆管理國際化的應用

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

你的Akelos應用可以在大多數共享主機服務供應方上運行,因為Akelos對伺服器唯一的要求就是支持PHP。因此,AkelosPHP框架是理想的用於發布單獨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的靈感起源於ApacheTapestry。從04年開始,PRADO成為SourceForge上的開源項目之一。這個項目目前進展到了3.x版本。

8.Zend

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

9.ZooP

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

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

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

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

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

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

10.QPHP

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

◆整合了Java和C

3. 為什麼php的cms大都是mvc框架而不是基於smarty的原因是什麼

一、Smarty簡明教程
1.安裝演示
下載最新版本的Smarty-3.1.12,然後解壓下載的文件。接下來演示Smarty自帶的demo例子。
(1)下載地址.
(2)在你的WEB伺服器根目錄下建立新目錄,這里我在/var/www下創建yqting/目錄,然後將解壓之後的目錄中的demo/和libs/目錄復制到/var/www/yqting/目錄下。
(3)這里要特別注意談昌demo/目錄下cache/和template_c/兩個目錄,一定要設置它們 為可讀寫許可權。
chmod 777 cache/
chmod 777 template_c/
(4)啟動apache。在瀏覽器中輸入http://localhost/yqting/demo/index.php ,這樣一個簡單的Smarty demo就實現了。
2.Smarty目錄結構
(1)以/var/www/yqting目錄開始分析:
yqting/
├── demo
│ ├── cache 緩沖文件存放目錄
│ ├── configs 配置文件目錄
│ ├── index.php
│ ├── plugins 自定義的一些實用插件
│ ├── templates 模板目錄
│ └── templates_c 編譯後的文件存放目錄
└── libs
├── debug.tpl debug模板
├── plugins 自定義的一些實用插件
├── SmartyBC.class.php 支持Smarty 2兼容
├── Smarty.class.php Smarty類定義文件
└── sysplugins Smarty核心功能插件,不需要進行修改
(2)添加自己定義的插件
上述目錄結構中,其實最核心的部分是libs/目錄,同時這部分也是不允許修改的。
而要添加自己的插件,一種方法是將自己定義的插件放在libs/plugins/目錄下,另一種方式是 單獨創建一個自己plugins/目錄,同時還要創建cache/、configs/、templates/和templates _c/目嘩侍賣錄,而且要保證cache/和templates_c/目錄的可讀寫許可權。
不難發現,其實上述例子中,demo/目錄就是一個包含了自己定義的插件的完整目錄。 我們可以參照demo/目錄來實現自己的程序。
3.實現一個簡單的例子
(1)在/var/www/yqting/下創建目錄weibo/,然後在weibo/目錄下創建cache/、 configs/、templates/和templates_c/目錄,修改cache/和templates_c/目錄的許可權為可讀寫。
(2)新建一個模板文件:index.tpl,將此文件放在/var/www/yqting/weibo/templates目錄下,代碼如下:
<html>
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=gb2312">
<title>Smarty</title>
</head>
<body>亂逗
username:{$Name}
</body>
</html>
這段代碼很簡單,有什麼不明白的繼續往下看,不要著急!每一個做顯示的.tpl文件都會對應一個處理業務邏輯的.php文件,下面介紹這個.php文件。
(3)新建index.php,將此文件放在/var/www/yqting/weibo/下,代碼如下:
<?php
/*sample example */
require '../libs/Smarty.class.php';
$smarty = new Smarty();
$username = "Smarty";
$smarty->assign("Name",$username);
$smarty->display('index.tpl');
?>
其中require使用的路徑一定要正確,可以參照上面的目錄結構看一下!
(4)在Smarty3中,Smarty類的構造函數中已經指定了template_dir、compile_dir 、config_dir和cache_dir,不需要再次指定。
(5) 在瀏覽器中輸入http://localhost/yqting/weibo/index.php,就可以看到輸出的信息username:Smarty 了。
二、解釋smarty的程序
我們可以看到,smarty的程序部分實際就是符合php語言規范的一組代碼,我們依次來解釋一下:
(1)/**/語句:
包含的部分為程序篇頭注釋。主要的內容應該為對程序的作用,版權與作者及編寫時間 做一個簡單的介紹,這在smarty中不是必需的,但從程序的風格來講,這是一個好的風格。
(2)include_once語句:
它將安裝到網站的smarty文件包含到當前文件中,注意包含的路徑一定要寫正確。
(3)$smarty = new Smarty():
這一句新建一個Smarty對象$smarty,簡單的一個對象的實例化。
(4)$smarty->templates="":
這一句指明$smarty對象使用tpl模板時的路徑,它是一個目錄,在沒有這一句時, Smarty默認的模板路徑為當前目錄的templates目錄,實際在寫程序時,我們要將這一 句寫明,這也是一種好的程序風格。
(5)$smarty->templates_c="":
這一句指明$smarty對象進行編譯時的目錄。在模板設計篇我們已經知道Smarty是 一種編譯型模板語言,而這個目錄,就是它編譯模板的目錄,要注意,如果站點位於linux 伺服器上,請確保 teamplates_c里定義的這個目錄具有可寫可讀許可權,默認情況下它的 編譯目錄是當前目錄下的templates_c,出於同樣的理由我們將其明確的寫出來。
(6)分隔符 $smarty->left_delimiter與$smarty->right_delimiter:
指明在查找模板變數時的左右分割符。默認情況下為"{"與"}",但在實際中因為我們要 在模板中使用<script>,Script中的函數定義難免會使用{},雖然它有自己的解決辦法,但習慣上我們將它重新定義為"{#"與"#}"或是"<!--{"與"}-->"或其它標志符,注意,如果在這里定義了左右分割符後,在模板文件中相應的要使每一個變數使用與定義相同的符號, 例如在這里指定為"<{"與"}>",html模板中也要相應的將{$name}變成<{$name}>, 這樣程序才可以正確的找到模板變數。
(7)$smarty->cache="./cache":
告訴Smarty輸出的模板文件緩存的位置。上一篇我們知道Smarty最大的優點在於它 可以緩存,這里就是設置緩存的目錄。默認情況下為當前目錄下的cache目錄,與 templates_c目錄相當,在linux系統中,我們要確保它的可讀可寫性。
(8)$smarty->cache_lifetime = 60 * 60 * 24:
這里將以秒為單位進行計算緩存有效的時間。第一次緩存時間到期時當Smarty的 caching變數設置為true時緩存將被重建。當它的取值為-1時表示建立起的緩存從不過期, 為0時表示在程序每次執行時緩 存總是被重新建立。上面的設置表示將cache_lifetime設置為一天。
(9)$smarty->caching = 1:
這個屬性告訴Smarty是否要進行緩存以及緩存的方式。
它可以取3個值,0: Smarty默認值,表示不對模板進行緩存;1:表示Smarty將使用當前定義的 cache_lifetime來決定是否結束cache;2:表示 Smarty將使用在cache被建立時使用 cache_lifetime這個值。習慣上使用true與false來表示是否進行緩存。
(10)$smarty->assign("name", $username):
該數的原型為assign(string varname, mixed var),varname為模板中使用的模板變數,var指出要將模板變數替換的變數名;其第二種原形為assign(mixed var),我們要在後面的例子詳細的講解這個成員函數的使用方法,assign是Smarty的核心函數之一, 所有對模板變數的替換都要使用它。
(11)$smarty->display("index.tpl"):
該函數原形為display(string varname),作用為顯示一個模板。簡單的講,它將分析 處理過的模板顯示出來,這里的模板文件不用加路徑,只要使用一個文件名就可以了,它路 徑我們已 經在$smarty->templates(string path)中定義過了。

程序執行完後我們可以打開當前目錄下的templates_c與cache目錄,就會發現在下 邊多出一些%%的目錄,這些目錄就是Smarty的編譯與緩存目錄,它由程序自動生成,不 要直接對這些生成的文件進行修改。
以上我簡單的把Smarty程序中的一些常用的基本元素介紹了一下,在後邊的例子中你可以看到將它們將被多次的使用。

4. php 的框架與模板

樓主的認知不對哦,以下為樓主解惑:

框架:在php源碼的基礎上,開發者將常用的功能進行二次封裝形成的代碼集合,其本身往往不具備任何可用的功能,其目的僅僅是使開發人員可以基於框架更快的開發出符合要求的應用。例如,不使用框架開發一個用戶管理功能可能需要5天,使用框架可以將這個時間縮短到2天。實際上,對於任何一個項目,訪問控制、資料庫訪問、文件處理等功能都是必備的,框架就是將這些常用功能進行了更易用的封裝,避免開發人員在通用組件上重復開發,浪費時間。

模板:為了將PHP內容和html內容更好的分離為目的產生的一種應用,其主要目的是為了網頁製作人員可以不去學習PHP就能修改頁面的內容(可惜不學PHP還要學smarty,因此我個人並不覺得模板真的能帶來什麼實際的好處)

另外,如dede,DZ,PHPCMS等是基於PHP的產品,本身已經具備了大量的功能,安裝之後就能使用,當然,因為需求的不同可能需要在該產品的基礎上進行二次開發。

綜述,模板沒有太大的價值,完全可以在非用不可的時候再去學習,對於PHP開發人員來說,smarty可以立刻上手。它可以(也只能)被框架或PHP產品使用。框架是必須掌握的,定製性很強的項目必然都是基於框架開發的。PHP產品,如果你要開發的項目和某個PHP產品的功能達到80%以上的契合,那麼應該考慮基於該產品進行開發。

一些網站提供簡單的博客,留言板等的源碼,不基於框架的小項目實際上只能稱為練習,只有參考價值。

註:不是說不使用框架的項目就不算項目,事實上如果一個項目如果沒有使用某某框架,其項目的一部分代碼也必然的會具有框架的特徵,即自定義框架也是框架。

5. 2018年,PHP的smarty還有必要學嗎

沒必要,現在用smarty的真心睜碰不多,很落伍,速度慢
smarty是用來做前後段代碼分離的
其實我個棚前人覺得很雞肋,對於現在前段來說鏈早清,後端部分代碼也是能看懂的
稍微有點經驗的都不在乎這些 效率還低,沒啥突出的
我們公司就不用這個,之前接觸的公司用這個的真心不多

6. 在php中,smart模板使用什麼框架

smarty本身就是一個框架,如果非要問的話只能說是mvc框架了

7. PHP最常用的框架是那幾個·_php開發框架排行

一直以來php框架被廣泛利用,多半都是基於mvc架構模式的,還有基於事件驅動模式的,大致列舉幾個。ThinkPHP是一個性能卓越並且功能豐富的輕量級PHP開發框架,本身具有很多的原創特性,並且倡導大道至簡,開發由我的開發理念,用最少的代碼完成更多的功能,宗旨就是讓WEB應用開發更簡單、更快速。從1.*版本開始就放棄了對PHP4的兼容,因此整個框架的架構和實現能夠得以更加靈活和簡單。2.0版本更是在之前的基礎上,經過全新的重構和無數次的完善以及改進,達到了一個新的階段,足以達到企業級和門戶級的開發標准。國人開發的PHP框架,目前最新版本為3.2.3版本。

Canphp是一個中國開源的php框架,主要的設計理念就是為了追求簡單,減少php初學者的學習成本,而且追求高效率,模版類不提供其他標簽,直接應用php的源代碼,還有它是微內核設計,移植性強,鬆散耦合等特點,能集成到你任何一個系統裡面。其中集成的http類相當的強大,採集圖片速度相當的快,為什麼這樣呢?因為適用了模擬非同步多進程的原理。

KYPHP是一個中國開源的PHP框架,kyphp嚴格遵守OOP和MVC的理念,具有控制項化、可擴展性強。kyphp設計彎虧理念是自由、簡單。既可以用php源碼編程,也可以使用標簽,支持多語言,多陸鬧鏈資料庫,多皮膚,多模型部署等,為程序員節省更多的時間。

InitPHP是一款輕量級的php開發框架,採用分層體系架構,適合大中型網站架構。提供豐富的library類庫,以及簡單的框架擴展機制。InitPHP還提供詳細的開發文檔,可以讓您在使用該框架的時候更加簡單實用。InitPHP實現了抽象DB層、分層體系架構、緩存無縫切換機制、簡單模板機制、多模型部署機制、強大的安全體系,是您快速開發php應用的利器!

SpeedPHP是一款全功能的國產PHP應用框架系統。她以「快速開發、快速學習、快速運行」為理念,在提高團隊開發效率、容易學習及使用、輕量級架構以增加執行速度等方面有著突出的表現。SpeedPHP框架是從實際運行的商業系統中取其精華而成的,在穩定性和運行速度上都非常出色;同時有著清晰的架構,更有利於提高團隊開發效率,教程眾多,入門容易,號稱最適合初學者的PHP框架,快速帶你進入PHP高手的行列。

CdvPHP一款簡單開源PHP框架,靈感來源於DX,根據實際開發總結匯成快捷方便的輕量級框架。沒有太多的硬性要求,也沒有一本超厚的幫助手冊。快速開發、部署、學習必備利器。KPHP即(kphp開源框架)是為了提高PHP開發效率而研發php開源框架,其核心簡單精煉,代碼安全並易於理解,功能更符合php學習開發的的需要,而且易於學習不改變程序員的開發習慣。ZendFramework在開發社區中有大量的追隨者,它致力於Web2.0風格的程序。因為它眾多的追隨者組成的活躍用戶開發的擴展支持,Zend被稱為「ThePHPCompany」。Zend是一個(也可能不是)今天可用的最受歡迎的PHP開發框架。它有健壯的特徵能夠支持協作開發,它需要一些PHP的額外知識。

Codelgniter以它的簡單易用,性能和速度而聞名。與Symphony不同,這款PHP開發框架對於共享主機的用戶而言很理想,如果你想有一個小型覆蓋面的框架。它提供了簡單的解決方案,還有擴展的知識庫,通過視頻教程,用戶指南和wiki來提供支持。

CakePHP無論對於初學者還是職業PHP開發者都是很好的選擇。它基於與RubyonRails同樣的原則而設計,它十分注重快速開發——這使得它成為一個非常好的用於RAD的開發框架。它快速增長的支持系統,簡潔性和可測量性使得CakePHP成為今天可用的最受歡迎的PHP開發框架之早孫一。

Symfony是為那些更加職業的主要開發企業級程序的開發者而准備的——特別是Askeet和Yahoo!Bookmarks。這款開源PHP開發框架有著豐富的特性,做起這些來綽綽有餘,它主要的缺點是比其他的框架略微慢一些。

Yii是一個基於組件、用於開發大型Web應用的高性能PHP框架。它將Web編程中的可重用性發揮到極致,能夠顯著加速開發進程。Yii(讀作「易」),代表簡單(easy)、高效(efficient)、可擴展(extensible)。

Seagull是一個良好的PHP開發框架,可以用來開發Web,命令行和GUI程序。這是一款無論對初學者還是職業程序員而言都及其簡單的開發框架。對於初學者,Seagull提供一套包含樣常式序的庫,經過簡單修改就能符合你的要求,而對於專家級程序員,Seagull提供了一整套設置選項——包括最佳練習,標準的和模塊化的代碼庫——來快速簡單地構建Web程序。Seagull有一個活躍的用戶社區以及豐富的支持文檔。

Laravel是一套簡潔、優雅的PHPWeb開發框架(PHPWebFramework)。它可以讓你從面條一樣雜亂的代碼中解脫出來;它可以幫你構建一個完美的網路APP,而且每行代碼都可以簡潔、富於表達力。E是一款非常簡潔優秀開源的超輕量級PHP框架,致力於追求簡潔,安全,自由,高效,是中小型項目首選框架。框架構架合理,一鍵生成完全合乎規范的大型網站文件夾架構,網站架構一目瞭然。強大的外部類庫支持,分布式存儲,強大的緩存系統,內置smarty模板引擎,單入口MVC模式,面向對象編程,具有微內核設計,移植性強,鬆散耦合等特點,能集成到你任何一個系統裡面。無論您是一個NewPHPer還是OLDPHPER,那麼E框架是您的首選。學習完E框架後您可以快速並且輕松的駕馭其他框架,步入php高手之列。

DuoLamPHP是一款超輕量級的PHP框架,命名是按照多啦A夢動漫給改成的拼音形式。DP是一個簡單、高效、上手容易的PHP框架,遵循apache開源協議。可以快速搭建出一個項目,作為一個超輕量級的PHP框架,完美支持MVC,完全面向對象。

Difeye框架是一款超輕量級PHP框架,由Kohana框架精簡而來,主要特點有:資料庫連接自動主從讀寫分離配置,適合單機和分布式站點部署;支持Smarty模板機制;支持mysql、nosql類的mongodb等第三方資料庫模塊;完全分離頁面和動作,自動執行Page_Load入口函數,支持二級路由,將頁面模塊和頁面上的動作完全分離,使站點升級遷移更簡單;框架簡單易學容易部署;

GalaxixPhp是一套專業的php建站框架,主要用於讓用戶在網上的建站,開發人員使用用GalaxixPhp可以大大的縮小中型甚至大型網站的開發周期。GalaxixPhp兼容JavaScript,可以無縫地與Javascript,flash,PHP等程序集成,適合構建展示、CMS、商城、論壇、博客、Wiki、等各種網站。並且官網上學習和說明文檔以及視頻教程齊全。是針對專業開發的人員的收費框架。並且官方正在不斷推出更新更實用的框架插件。最新版本1.1.2.

PhpPeanuts是一個用以開發資料庫後端應用的PHP框架,包含一個可擴展的動態腳手架用來創建一個完整的web應用,提供用戶界面和ORM,包括CRUD操作、關聯關系以及一些示例查詢。phpPeanuts2.0完全支持PHP5,遵循ESTRICT標准,不再使用變數引用來傳遞對象;提升了靈活性;更獨立的模塊,以及迭代的對象復制等等。

RongFramework是一個國產的基於php5的面向對象開發框架,開發的主要目的是簡化開發、高性能開發。支持資料庫文件緩存、資料庫通用操作及封裝。簡化CRUD代碼編寫。支持在線生成CRUD代碼,只要選中數據表名稱,就可以生成CRUD代碼。不懂編程的人也可以做到。rongframework分為php代碼模板(classRong_View_PHP)和Rong_View_Wudimei(無敵美模板引擎,類似smarty)兩種模板機制。擁有良好的MVC機制和url美化方式、可以在代碼中實現URL重寫(由Rong_Countroller_Route實現)。

OpenbizFramework是為搭建企業應用而設計的PHP的基於面向對象的快速開發框架。它可以幫助專業軟體開發人員和技術咨詢專家來構建用於網路上的企業級應用。OpenbizFramework的設計目標是節省構建復雜應用系統的開發投入和縮短開發時間。藉助於Openbiz的幫助,應用程序的開發將基於完善的MVC架構建立,以Metadata驅動為核心描述業務邏輯,支持多種ORM邏輯,並且有OpenbizAppbuilder作為圖形化集成開發環境的快速開發平台。

8. 新手入門php要學哪些內容呢

1、WEB基礎

要知道網站是什麼東西,所使用的協議是怎麼工作的,怎樣把網站放在伺服器上。


2、HTMLphp


HTMLphp是嵌入在HTML的語言,所以HTML是必須的。可以用HTML寫出簡單的靜態的頁面,放在本機的伺服器上看看效果。


3、DIV+CSS


能夠用DIV+CSS布局做出漂亮的精美靜態網頁。


4、php基礎


學習php基礎,如php語法,php變數,php流程式控制制,php函數,php數組應用,php字元串處理,php常用模塊,php文件處理,php動態圖像處理,會話控制等,就可以把靜態頁面變成動態的。這個階段比較枯燥,主要是記憶,必須能夠熟練應用。


5、MySQL


網站往往包含大量的信息,這些信息不可能都放在程序(php文件)中,需要MySQL來儲存大量的數據信息。


6、Javascript


掌握了以上內容就可以搭建一個php基礎網站,但是還需要靠Javascript來完成網站的特效告哪告和信息驗證等。


7、php高級


作為一個可以上線運營的全功能網站,還要繼續學習php高級知識,如php面向對象,數據抽象層PDO,MEMCACHE,高級SESSION,php的設計模式,MVC,smarty模板,主流框架的解讀等內容,這個階段需要多讀優質的開源代碼,多寫代碼。


8、Linux


正如大家所熟知的php較佳的搭配是LAMP(Linux+Apache+MySQL+Php)或LNMP(Linux+Nginx+MySQL+Php),那麼顯然在Linux系統下的php網站比在Windows下兼容性好,基於此我們需要知道在Linux下搭建php環境的方法以及Linux的日常管理命令,以便我們網站的日常緩冊管理運營。


9、項目相關


這個階段首先需要了解項目開發流程,需求分析,程序設計說明書,資料庫設計說明書,編碼規范,大流量/大數據架構,MYSQL深度優化,全文索引等內容。


目前為止學到這個階段,已經可以算是php小牛了,要繼續向php大牛進發就需要參與開發大型網站項目,以此練襪明手。北大青鳥認為參與大項目開發,實踐為主。通過這階段的學習就可以自主做企業網站、論壇、網頁游戲等。


9. php的tp框架和mvc有啥區別

首先說Model吧。x0dx0a在TP中是一個表對應一個Model,而且普通Model中只是一些自動驗證啊,自動完成啊、還有數據欄位信息啊一些東西;而CI中的Model則完全不同,一個Model不必約束於一個表,也就是說名字為abc的Model中你也可以查詢名字為def的表中的數據,而且可以定義方法完成一些數據查詢,比如我可以在名為articles_model的Model中定義一個名字為get_articles的方法來獲取所有文章信息,當某個Controller載入棚森遊了這個Model後,就可以在相應的Controller中用x0dx0ax0dx0a1x0dx0a x0dx0a$this->articles_model->get_articles();x0dx0ax0dx0a來方便地獲取所有文章信息,而對於TP來說,這些春兄操作只能在Action類中完成。2.0版的TP已經把View、Relation和Adv三個高級查詢model庫類定為不自動載入了,看了一下手冊,感覺除了View視圖查詢容易用一點,另外兩個都不怎麼好用,感覺用起來太復雜,還不如用原生的SQL查詢。CI的Model還有一個使我很喜歡的方法就是dbprefix方法,在使用原生的sql查詢時使用這個函數使得修改資料庫表名前綴後你的代碼不需要經過任何改動。在TP中我沒有發現類似的函數,當我用TP開發一個博客系統時,發現關聯查詢很麻煩,於是想用原生的SQL查詢,卻沒有找到自動增加資料庫表名前綴的方法,雖然可以自己修改TP的核心庫來實現,但是還是覺得這樣有點不太好。真的要感謝TP,如果不是TP,也許我就不會去關注CI了,當我那天看了幾頁CI的英文文檔後,立馬就對它產生的深厚的興趣,於是第二天一起床就開始看CI的手冊,雖然是從官網下的英文版的,不過它的手冊寫得很簡潔、很周到,邊看邊操作,看完手冊後我就幾乎能熟練使用這個框架了。於是用它開發了一個博客系統。x0dx0aCI的Model類簡單易用,TP的Model類功能相對來說要強大一些,但是用起來個人感覺沒有那麼方便。x0dx0a其次,對於View,從功能上講,TP的View要更加強大一些,選擇更多一些,在TP中你可以選擇就用PHP作模板引擎,可以就用TP自身的模板引擎,也可以選擇用smarty等其它第三鏈銷方模板引擎。而在CI中就只能用CI內置的功能簡單的模板引擎或者用原生的PHP代碼作模板,個人覺得用PHP作模板更好一些,一來省去了學習另外的模板引擎語法的麻煩,二來執行效率更高一些。因些從View來講,選擇CI或者是TP都無所謂。x0dx0a再次是Controller了,在CI中的應用的控制器是繼承自核心類Controller的,TP中的控制器則是繼承於核心類Action。不過還是有不同的,在TP中,你可以把一些公共的變數或者在多個控制器中都要執行的東西放在一個action里,假如這個action文件為CommonAction.class.php ,在它的_initialize方法中可以執行一些在多個控制器中都要執行的代碼或者初始化一些多個控制器都要使用的變數,這樣,應用的其它action只要繼承CommonAction 就可以實現了。因為框架在載入相應action時首先會自動載入那個CommonAction的。而在CI中就沒有這個方便的功能了,但是也可以自己寫一個library,在該library類的__construct方法里放一些代碼,然後在每個控制器中都載入這個library,這樣也可以實現像TP一樣的功能。不過相對來說麻煩了一些。TP還有一點比較靈活的就是,在這個控制器(action)裡面可以執行那個控制器中的函數(比如用A或者R函數來實現),在CI中則不行,你不能在這個控制器中執行那個控制器中的函數。還有就是TP可以定義一個名為EmptyAction的控制器,當所有控制器都找不到時,就調用這個Empty控制器。這一點如果與empty方法配合,可以使得URL大大縮減。雖然CI和TP都支持空操作,不過這二者的空操作名稱不相同,實現的優先順序也不相同。在TP中的空操作(_empty方法)優先順序是最低的,也就是說當當前控制器的所有操作都找不到時才調用這個空操作;在CI中則恰恰相反,只要存在空操作(_remap方法),該控制器的其它的操作都沒用了(不能訪問了)。

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

現在的PHP框架太多了,如yii codeigniterlaravel thinkphp 一看文檔就一大堆英文資料,學也學不過來,可是上班時候公司要求你會這個,有的要求你會那個,看書上的理論又假大空,不知道在說什麼東西,看實際的例子代碼又太復雜龐大,所以今天就做一個簡單的小例子主要來給中級階段的php同學了解MVC的共同原理,了解這些原理自己也可以設計一個mvc 框架
先創建一個主流框架的目錄,包含控制器,數據模型,視圖顯示,3個文件夾,和一個入口文件
現在來設計一個路由地址,http://localhost/mvc/index.php?c=控制器名&a=方法名¶m=參數名;然後寫在入口文件里的獲取路由的代碼,如下圖所示,這樣寫就能獲取不同的控制器名字和不同的方法,由入口文件獲取這些控制器和方法名,參數後就傳入指定的控制器方法名中
現在寫控制器的類和方法,便於接受入口文件傳入的值,控制器的作用就是協調調用數據處理和顯示樣式
現在來寫好數據處理類,數據處理主要是依靠mysql等和視圖顯示類,視圖主要就是把內容顯示出來,一般由smarty代替,數據處理文件名model.php,視圖顯示index.php
現在輸入http://localhost/mvc/index.php?c=控制器名&a=方法名¶m=參數名 看他們都顯示出來了,一個簡單的框架就完成了,大家有機會自行擴展吧!
那麼控制器和視圖,數據的關系是什麼呢?一般具體中是從入口文件得到用戶輸入的控制器和方法名,參數,再傳給用戶指定的控制器,再由控制器(a)把參數傳給數據處理(m),m處理後返回給a,a 將得到的內容傳給視圖顯示(v),v再把他顯示出來。這只是一個簡單的MVC設計模式而已,大家可以在這上面設計出比較復雜的MVC模式

閱讀全文

與phpmvcsmarty框架相關的資料

熱點內容
蘋果筆記本t2加密晶元怎麼打開 瀏覽:796
安卓如何把手機投屏至電視 瀏覽:737
方舟編譯器現在可提速哪些軟體 瀏覽:58
微信加密為什麼是黑屏 瀏覽:473
android去電狀態 瀏覽:602
蘋果13如何加密視頻 瀏覽:813
linuxweblogic緩存 瀏覽:67
雲伺服器不同地域 瀏覽:946
python鬧鍾怎麼打 瀏覽:686
虛擬主機伺服器有什麼區別 瀏覽:833
演算法與程序的奧秘章節檢測 瀏覽:377
找pdf 瀏覽:529
與伺服器連接斷開如何處理 瀏覽:833
伺服器維修預計十分鍾什麼意思 瀏覽:170
黑馬程序員主打教學是什麼 瀏覽:41
python九乘法表怎麼編寫 瀏覽:974
思維方式pdf 瀏覽:656
tcc社區app怎麼注冊 瀏覽:941
央視網下載加密 瀏覽:454
命令行訪問伺服器 瀏覽:36