国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) 后端開(kāi)發(fā) php教程 理解PHP中的MVC編程之MVC框架簡(jiǎn)介

理解PHP中的MVC編程之MVC框架簡(jiǎn)介

Dec 01, 2016 am 11:11 AM
mvc

【什么是MVC?】?

MVC是一個(gè)可以讓你把“三個(gè)部分(即MVC的全稱,Model、View、Controller)”諧調(diào)地組成一個(gè)復(fù)雜應(yīng)用程序的概念。一輛汽車就是一個(gè)在現(xiàn)實(shí)生活中非常好的MVC例子。我們看車都看兩個(gè)View(顯示)部分:內(nèi)部和外部。而這兩個(gè)都離不開(kāi)一個(gè)Controller(控制者):司機(jī)。剎車系統(tǒng)、方向盤和其他操控系統(tǒng)代表了Model(模型):他們從司機(jī)(Controller)那里取得控制方法然后應(yīng)用到內(nèi)部和外觀(View)。?

【網(wǎng)絡(luò)上的MVC】?

MVC框架所涵蓋的概念相當(dāng)簡(jiǎn)單并且極度靈活?;镜母拍罹褪牵阌幸粋€(gè)單獨(dú)的控制器(如index.php)用來(lái)控制所有建立在參數(shù)請(qǐng)求基礎(chǔ)上的框架內(nèi)應(yīng)用程序。這個(gè)控制器通常包含了(最小程度上)一個(gè)定義模型的參數(shù)、一個(gè)事件和一個(gè)GET參數(shù)。這樣控制器就能確認(rèn)所有的請(qǐng)求然后運(yùn)行相應(yīng)的事件。打個(gè)比方來(lái)說(shuō),一個(gè)像這樣/index.php?module=foo&event=bar的請(qǐng)求很有可能就是用來(lái)載入一個(gè)名叫foo的類,然后運(yùn)行foo::bar()[就是其中的bar()函數(shù)]。這樣做的好處有:?

一個(gè)對(duì)應(yīng)所有應(yīng)用程序的接口?

同時(shí)維護(hù)一個(gè)應(yīng)用程序內(nèi)無(wú)數(shù)的代碼非常麻煩,因?yàn)槊恳欢未a都有自己的相對(duì)路徑、數(shù)據(jù)庫(kù)鏈接、驗(yàn)證等等。而這樣做就免除你在這方面的煩惱,允許你合并并重復(fù)使用代碼?

【為什么要?jiǎng)?chuàng)建作者自己的MVC框架?】?

迄今為止,我沒(méi)有見(jiàn)到過(guò)太多用PHP寫的MVC框架。事實(shí)上我僅僅知道一個(gè)-Solar,是完全用PHP5寫的。另外一個(gè)是Cake,一個(gè)試圖成為PHP的RoR(Rubyalign=centerbgColor=#e3e3e3border=1>

<?php 
 require_once('config.php');//Otherrequires,DBinfo,etc. 
 $APP_DB='mydb'; 
 $APP_REQUIRE_LOGIN=false;//Settotrueifscriptrequireslogin 
 $APP_TEMPLATE_FILE='foo.php';//Smartytemplate 
 $APP_TITLE='MyApplication'; 
 if($APP_REQUIRE_LOGIN==true){ 
if(!isset($_SESSION['userID'])){ 
 header("Location:/path/to/login.php"); 
 exit(); 
} 
 } 
 $db=DB::connect('mysql://'.$DB_USER.':'.$DB_PASS.'@localhost/'.$APP_DB); 
 if(!PEAR::isError($db)){ 
$db->setFetchMode(DB_FETCHMODE_ASSOC); 
 }else{ 
die($db->getMessage()); 
 } 
 //Putyourlogichere 
 //Outputthetemplate 
 include_once(APP_TEMPLATE_PATH.'/header.php'); 
 include_once(APP_TEMPLATE_PATH.'/'.$APP_TEMPLATE_FILE); 
 include_once(APP_TEMPLATE_PATH.'/footer.php'); 
?>


天哪,只是看這些代碼都會(huì)讓我有退縮的欲望。這段代碼的概念就是確保每一個(gè)應(yīng)用程序都能適用于這個(gè)處理方法,比如我可以簡(jiǎn)單地將template.txt拷進(jìn)myapp.php,改變一些變量,瞧,它就能運(yùn)行起來(lái)了。盡管如此,這個(gè)組織嚴(yán)密的處理方法存在一些嚴(yán)重的缺點(diǎn):

如果我的老板想讓作者用myapp.php在一些情況下輸出PDF、一些情況下輸出HTML、一些情況下(直接提交的XML請(qǐng)求)SOAP,我該怎么辦?

如果這個(gè)應(yīng)用程序需要IMAP或LDAP驗(yàn)證,我該怎么辦?

我該如何處理各種不同的代碼(包括編輯、升級(jí)和刪除)?

我該如何處理多級(jí)驗(yàn)證(管理員vs.非管理員)?
我該如何啟用輸出緩存?www.phpv.net轉(zhuǎn)載請(qǐng)注明出處

【新方式】

將所有東西都扔進(jìn)這個(gè)MVC框架,你會(huì)發(fā)現(xiàn)生活是如此簡(jiǎn)單。請(qǐng)對(duì)比以下代碼:

<?php 
 classmyappextendsFR_Auth_User 
 { 
publicfunction__construct() 
{ 
 parent::__construct(); 
} 
 publicfunction__default() 
 { 
//Dosomethinghere 
 } 
 publicfunctiondelete() 
 {} 
 publicfunction__destruct() 
 { 
parent::__destruct(); 
 } 
} 
?>

注意這段代碼顯然不是用來(lái)鏈接到一個(gè)數(shù)據(jù)庫(kù)、判斷一個(gè)用戶是否已經(jīng)登陸、或者輸出任何其他信息??刂破髡莆樟怂械囊磺?。?

如果我想驗(yàn)證LDAP,我可以建立FR_Auth_LDAP??刂破骺梢宰R(shí)別某些輸出方法(比如$_GET['output'])并可以隨時(shí)轉(zhuǎn)換成PDF或者SOAP。事件處理delete,只負(fù)責(zé)刪除,其他的它都不管。因?yàn)檫@個(gè)模塊擁有一個(gè)FR_User類的實(shí)例,它可以簡(jiǎn)單地判斷一個(gè)用戶是否已經(jīng)登陸等等。Smarty,作為模板引擎控制緩存是理所當(dāng)然的,但是控制器同樣可以控制一部分緩存。?

從前面講的老方式到MVC方式對(duì)于很多人來(lái)講可能是一個(gè)全新、陌生的概念,但是一旦你轉(zhuǎn)換到了這樣一個(gè)概念,那么要轉(zhuǎn)回去將是件相當(dāng)困難的事情。?

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

PHP MVC 架構(gòu):構(gòu)建面向未來(lái)的 Web 應(yīng)用程序 PHP MVC 架構(gòu):構(gòu)建面向未來(lái)的 Web 應(yīng)用程序 Mar 03, 2024 am 09:01 AM

引言在當(dāng)今快速發(fā)展的數(shù)字世界中,構(gòu)建健壯、靈活且可維護(hù)的WEB應(yīng)用程序至關(guān)重要。PHPmvc架構(gòu)提供了實(shí)現(xiàn)這一目標(biāo)的理想解決方案。MVC(模型-視圖-控制器)是一種廣泛使用的設(shè)計(jì)模式,可以將應(yīng)用程序的各個(gè)方面分離為獨(dú)立的組件。MVC架構(gòu)的基礎(chǔ)MVC架構(gòu)的核心原理是分離關(guān)注點(diǎn):模型:封裝應(yīng)用程序的數(shù)據(jù)和業(yè)務(wù)邏輯。視圖:負(fù)責(zé)呈現(xiàn)數(shù)據(jù)并處理用戶交互??刂破鳎簠f(xié)調(diào)模型和視圖之間的交互,管理用戶請(qǐng)求和業(yè)務(wù)邏輯。PHPMVC架構(gòu)phpMVC架構(gòu)遵循傳統(tǒng)MVC模式,但也引入了語(yǔ)言特定的功能。以下是PHPMVC

PHP MVC 架構(gòu)的進(jìn)階指南:解鎖高級(jí)功能 PHP MVC 架構(gòu)的進(jìn)階指南:解鎖高級(jí)功能 Mar 03, 2024 am 09:23 AM

mvc架構(gòu)(模型-視圖-控制器)是PHP開(kāi)發(fā)中最流行的模式之一,因?yàn)樗鼮榻M織代碼和簡(jiǎn)化WEB應(yīng)用程序的開(kāi)發(fā)提供了清晰的結(jié)構(gòu)。雖然基本的MVC原理對(duì)于大多數(shù)Web應(yīng)用程序來(lái)說(shuō)已經(jīng)足夠,但對(duì)于需要處理復(fù)雜數(shù)據(jù)或?qū)崿F(xiàn)高級(jí)功能的應(yīng)用程序,它存在一些限制。分離模型層分離模型層是高級(jí)MVC架構(gòu)中常見(jiàn)的一種技術(shù)。它涉及將模型類分解為更小的子類,每個(gè)子類專注于特定功能。例如,對(duì)于一個(gè)電子商務(wù)應(yīng)用程序,您可以將主模型類分解為訂單模型、產(chǎn)品模型和客戶模型。這種分離有助于提高代碼的可維護(hù)性和可重用性。使用依賴注入依賴

揭秘SpringMVC框架的成功:它為何廣受歡迎 揭秘SpringMVC框架的成功:它為何廣受歡迎 Jan 24, 2024 am 08:39 AM

SpringMVC框架解密:為什么它如此受歡迎,需要具體代碼示例引言:在當(dāng)今的軟件開(kāi)發(fā)領(lǐng)域中,SpringMVC框架已經(jīng)成為開(kāi)發(fā)者非常喜愛(ài)的一種選擇。它是基于MVC架構(gòu)模式的Web框架,提供了靈活、輕量級(jí)、高效的開(kāi)發(fā)方式。本文將深入探討SpringMVC框架的魅力所在,并通過(guò)具體的代碼示例來(lái)展示其強(qiáng)大之處。一、SpringMVC框架的優(yōu)勢(shì)靈活的配置方式Spr

如何使用PHP實(shí)現(xiàn)MVC模式 如何使用PHP實(shí)現(xiàn)MVC模式 Jun 07, 2023 pm 03:40 PM

MVC(Model-View-Controller)模式是一種常用的軟件設(shè)計(jì)模式,可以幫助開(kāi)發(fā)人員更好地組織和管理代碼。MVC模式將應(yīng)用程序分為三部分:模型(Model)、視圖(View)和控制器(Controller),每個(gè)部分都有自己的角色和職責(zé)。在本文中,我們將討論如何使用PHP實(shí)現(xiàn)MVC模式。模型(Model)模型代表應(yīng)用程序的數(shù)據(jù)和數(shù)據(jù)處理。通常,

PHP中如何使用MVC架構(gòu)設(shè)計(jì)項(xiàng)目 PHP中如何使用MVC架構(gòu)設(shè)計(jì)項(xiàng)目 Jun 27, 2023 pm 12:18 PM

在Web開(kāi)發(fā)中,MVC(Model-View-Controller)是一種常用的架構(gòu)模式,用于處理和管理應(yīng)用程序的數(shù)據(jù)、用戶界面和控制邏輯。PHP作為流行的Web開(kāi)發(fā)語(yǔ)言,也可以借助MVC架構(gòu)來(lái)設(shè)計(jì)和構(gòu)建Web應(yīng)用程序。本文將介紹如何在PHP中使用MVC架構(gòu)設(shè)計(jì)項(xiàng)目,并解釋其優(yōu)點(diǎn)和注意事項(xiàng)。什么是MVCMVC是一種軟件架構(gòu)模式,通常用于Web應(yīng)用程序中。MV

如何在PHP8框架中實(shí)現(xiàn)可擴(kuò)展的MVC架構(gòu) 如何在PHP8框架中實(shí)現(xiàn)可擴(kuò)展的MVC架構(gòu) Sep 11, 2023 pm 01:27 PM

如何在PHP8框架中實(shí)現(xiàn)可擴(kuò)展的MVC架構(gòu)引言:隨著互聯(lián)網(wǎng)的快速發(fā)展,越來(lái)越多的網(wǎng)站和應(yīng)用程序采用了MVC(Model-View-Controller)架構(gòu)模式。MVC架構(gòu)的主要目標(biāo)是將應(yīng)用程序的不同部分分離開(kāi)來(lái),以便提高代碼的可維護(hù)性和可擴(kuò)展性。在本文中,我們將介紹如何在PHP8框架中實(shí)現(xiàn)可擴(kuò)展的MVC架構(gòu)。一、了解MVC架構(gòu)模式MVC架構(gòu)模式是一種軟件設(shè)

PHP8框架開(kāi)發(fā)MVC:初學(xué)者需要知道的重要概念和技巧 PHP8框架開(kāi)發(fā)MVC:初學(xué)者需要知道的重要概念和技巧 Sep 11, 2023 am 09:43 AM

PHP8框架開(kāi)發(fā)MVC:初學(xué)者需要知道的重要概念和技巧引言:隨著互聯(lián)網(wǎng)的快速發(fā)展,Web開(kāi)發(fā)在當(dāng)今的軟件開(kāi)發(fā)行業(yè)中扮演著重要的角色。PHP被廣泛用于Web開(kāi)發(fā),并且有許多成熟的框架可以幫助開(kāi)發(fā)人員更高效地構(gòu)建應(yīng)用程序。其中,MVC(Model-View-Controller)架構(gòu)是最常見(jiàn)且廣泛使用的模式之一。本文將介紹初學(xué)者在使用PHP8框架開(kāi)發(fā)MVC應(yīng)用程

揭秘 PHP MVC 架構(gòu)的秘密:讓你的網(wǎng)站飛起來(lái) 揭秘 PHP MVC 架構(gòu)的秘密:讓你的網(wǎng)站飛起來(lái) Mar 03, 2024 am 09:25 AM

模型-視圖-控制器(mvc)架構(gòu)是一種強(qiáng)大的設(shè)計(jì)模式,用于構(gòu)建可維護(hù)且可擴(kuò)展的WEB應(yīng)用程序。PHPMVC架構(gòu)將應(yīng)用程序邏輯分解為三個(gè)不同的組件:模型:表示應(yīng)用程序中的數(shù)據(jù)和業(yè)務(wù)邏輯。視圖:負(fù)責(zé)呈現(xiàn)數(shù)據(jù)給用戶??刂破鳎撼洚?dāng)模型和視圖之間的橋梁,處理用戶請(qǐng)求并協(xié)調(diào)其他組件。MVC架構(gòu)的優(yōu)勢(shì):代碼分離:MVC將應(yīng)用程序邏輯與表示層分離,提高了可維護(hù)性和可擴(kuò)展性??芍赜眯裕阂晥D和模型組件可以跨不同的應(yīng)用程序重用,減少重復(fù)代碼。性能優(yōu)化:MVC架構(gòu)允許緩存視圖和模型結(jié)果,從而提高網(wǎng)站速度。測(cè)試友好:分離

See all articles