成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

理解PHP中的MVC編程之控制器

瀏覽:5日期:2024-02-05 17:53:41

簡單來講,控制器的作用就是接受請求。它使用獲取的方法,在這里是通過URI,載入一個功能模塊來刷新或者提交一個表述層。控制器將使用$_GET自動全局變量來判斷載入哪一個模塊。

一個請求的例子,看起來像這樣:

http://example.com/index.php?module=login

這看起來很簡單,但是在實現的過程中卻不是。這里是幾個控制器能識別的argument部分:

module定義了使用哪一個模塊,如users模塊 class定義了使用哪一個功能類,如你想讓用戶login還是logout event定義了使用哪一個具體事件

這樣一個更復雜的例子可以解釋上面的各個argument最終組成的請求URL:

http://example.com/index.php?module=users&class=login

這段請求告訴控制器應該載入users模塊,然后是login類,最后因為沒有定義具體事件,所以運行login::__default()默認事件。

以下是具體代碼部分:

<?php  /*** index.php** @author Joe Stump <joe@joestump.net>* @copyright Joe Stump <joe@joestump.net>* @license http://www.opensource.org/licenses/gpl-license.php* @package Framework */

 require_once('config.php');

 // {{{ __autoload($class) /*** __autoload** Autoload is ran by PHP when it can't find a class it is trying to load.* By naming our classes intelligently we should be able to load most classes* dynamically.** @author Joe Stump <joe@joestump.net>* @param string $class Class name we're trying to load* @return void* @package Framework */

 function __autoload($class) {$file = str_replace('_','/',substr($class,2)).'.php'; require_once(FR_BASE_PATH.'/includes/'.$file); } // }}}

 if (isset($_GET['module'])) {$module = $_GET['module'];if (isset($_GET['event'])) { $event = $_GET['event'];} else { $event = '__default';}

 if (isset($_GET['class'])) {$class = $_GET['class']; } else {$class = $module; }

 $classFile = FR_BASE_PATH.'/modules/'.$module.'/'.$class.'.php'; if (file_exists($classFile)) {require_once($classFile);if (class_exists($class)) { try {$instance = new $class();if (!FR_Module::isValid($instance)) { die('Requested module is not a valid framework module!');}

$instance->moduleName = $module;if ($instance->authenticate()) { try {$result = $instance->$event();if (!PEAR::isError($result)) { $presenter = FR_Presenter::factory($instance->presenter,$instance);

if (!PEAR::isError($presenter)) { $presenter->display();} else { die($presenter->getMessage());} }} catch (Exception $error) { die($error->getMessage());} } else {die('You do not have access to the requested page!'); }} catch (Exception $error) {  die($error->getMessage()); } } else {die('An valid module for your request was not found');  } } else {die('Could not find: $classFile');  } } else {die('A valid module was not specified');}

?>;

接下來是以上代碼具體的注釋:

載入“config.php”

定義__autoload()函數。這是PHP5里面的一個新函數,方便動態地載入各個類。

如果一個argument被定義,那么載入相關的模塊、類和具體事件

接下來就是一些判斷以及錯誤的具體操作

最后一切無誤后就載入表述層

【友好URL】

如果你覺得上面例子講到的請求URL讓你覺得不舒服的話,那么就用mod_rewrite來實現友好URL吧。接下來是作者給這個框架寫的實際重寫標準代碼:

RewriteEngine On

# Change the URI here to whatever you want your homepage to be

RewriteRule ^/$ /index.php?module=welcome [L,QSA]

# Changes /index.php?module=welcome to /welcome

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-d

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f

RewriteRule ^/([^/]*)$ /index.php?module=$1 [L,QSA]

# Changes /index.php?module=users&class=login to /users/login

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-d

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f

RewriteRule ^/([^/]*)/([^/]*)$ /index.php?module=$1&class=$2 [L,QSA]

# Changes /index.php?module=users&class=login&event=foo

# to /users/login/foo.html

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-d

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f

RewriteRule ^/([^/]*)/([^/]*)/([^/]*).html$

/index.php?module=$1&class=$2&event=$3 [L,QSA]

Extending the Controller

【擴展控制器】

擁有一個集中控制器的一點好處就是你加入一些功能后,馬上就能通過控制器體現出來。以下是幾個可以擴展一下這個控制器的點子,使這個框架的整體能力更加強大: 你可以使用PHP5里一個新東西SoapServer來自動檢測一個請求是否為SOAP

你可以使用控制器來過濾所有的自動全局變量如$_GET和$_POST以防止惡意HTML代碼等

你可以使用控制器即時地轉換表述層,比如從默認的方式轉到PDF方式

你可以直接在控制器中加入緩存機制,這樣的好處是應用程序整體都能使用到緩存以提高效率

當然,需要注意一點的是,你在控制器中所增加的功能將體現在程序全局。如你想過濾所有的自動全局變量,但是很多應用程序的管理員需要使用到一些HTML代碼,反而成為一件棘手的事情(譯者注:本人的想法是可以加一個if條件語句,在加載特定模塊時不應用過濾功能即可)。

標簽: PHP
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
日日夜夜免费精品视频| 亚洲一区二区三区四区不卡| 亚洲女与黑人做爰| 亚洲看片一区| 性久久久久久久久久久久| 欧美另类专区| 色av成人天堂桃色av| 亚洲老妇xxxxxx| 亚洲人妖在线| 亚洲色图视频网站| 亚洲天堂久久| 国产精品视频看| 欧美人成网站| 欧美国产精品一区二区三区| 99国产精品久| 26uuu亚洲婷婷狠狠天堂| 成人性生交大片免费| 日韩一区二区三区高清免费看看| 精品一区免费av| 欧美吞精做爰啪啪高潮| 亚洲成人久久影院| 国产精品久久国产愉拍| 国产精品日日摸夜夜摸av| 欧美91大片| 国产精品福利一区二区| 97精品久久久久中文字幕| 久久综合999| 91网址在线看| 国产免费成人在线视频| 色综合一区二区三区| 国产午夜精品理论片a级大结局| 91视频国产观看| 中文子幕无线码一区tr| 亚洲欧洲日韩综合二区| 亚洲综合色视频| 国产亚洲在线观看| 日韩中文字幕91| 欧美日韩精品一区二区在线播放| 国产成人av电影在线观看| 欧美变态tickling挠脚心| 99vv1com这只有精品| 中文字幕一区二区三| 国产日韩三区| 美女网站一区二区| 欧美一级视频精品观看| 99九九99九九九视频精品| 国产精品久久久久久久久免费丝袜| 亚洲精品三级| 奇米精品一区二区三区在线观看| 欧美理论电影在线| 成人黄色777网| 国产精品网站导航| 国产亚洲毛片在线| 狂野欧美性猛交blacked| 日韩三级中文字幕| 黑丝一区二区| 婷婷一区二区三区| 欧美一区二区三区四区高清| 欧美成人综合| 亚洲一级不卡视频| 欧美色涩在线第一页| 福利一区福利二区| 欧美国产激情一区二区三区蜜月| 999在线观看精品免费不卡网站| 日本午夜一本久久久综合| 日韩亚洲欧美在线| 激情婷婷亚洲| 黄色av一区| 亚洲一区二区三区四区五区中文| 中文字幕久久午夜不卡| 欧美亚州韩日在线看免费版国语版| 日日摸夜夜添夜夜添精品视频| 日韩一区二区三区四区五区六区| 在线视频观看日韩| 久久精品国产精品亚洲综合| 国产视频一区二区在线| 久久国产日韩欧美| 成人av影视在线观看| 欧美三级电影精品| 91国产免费观看| 亚洲一区在线直播| 亚洲精品三级| 亚洲国产日韩综合一区| 久久精品视频网| 欧美日韩在线直播| 亚洲三级理论片| 麻豆国产精品官网| 亚洲网站视频| 欧美无砖专区一中文字| 国产女主播在线一区二区| 一区二区三区自拍| 成人h动漫精品一区二区| 悠悠资源网久久精品| 91久久线看在观草草青青| 久久久久久一级片| 五月婷婷另类国产| 欧美激情成人在线| 久久一日本道色综合久久| 久久网站最新地址| 人人爽香蕉精品| 国色天香一区二区| 91.com在线观看| 亚洲综合丁香婷婷六月香| 懂色av一区二区在线播放| 老鸭窝毛片一区二区三区| 精品欧美一区二区久久| 久久精品国产亚洲一区二区三区| 中文一区在线| 中文字幕国产一区二区| 国产一区二区三区av电影| 国产日韩亚洲| 国产精品视频看| 东方aⅴ免费观看久久av| 日本韩国欧美国产| 中文字幕在线不卡国产视频| 国产酒店精品激情| 看欧美日韩国产| 亚洲色图视频网| 欧美日韩一区在线视频| 日韩视频免费观看高清完整版在线观看| 亚洲成人精品影院| 亚洲欧洲一二三| 国产精品毛片大码女人| 99久久99久久精品免费看蜜桃| 在线播放亚洲一区| 蜜臀精品久久久久久蜜臀| 亚洲一区免费| 亚洲老妇xxxxxx| 一区二区三区国产盗摄| 日韩一区有码在线| 国产综合激情| 中文字幕免费观看一区| 欧美国产免费| 欧美国产日韩一二三区| 欧美日韩成人一区二区三区| 久久久美女毛片| 欧美人成在线| 国产精品成人在线观看| 激情偷拍久久| 亚洲自拍偷拍图区| 亚洲欧美久久久| 亚洲成人自拍网| 久久精品日产第一区二区三区| 五月综合激情日本mⅴ| 美日韩精品免费| 日韩电影在线观看电影| 日本道精品一区二区三区| 国内精品不卡在线| 欧美大片一区二区| 亚洲欧美在线网| 亚洲午夜久久久久久久久电影院 | 欧美在线观看视频在线| 国产美女一区| 国产视频不卡| 99在线|亚洲一区二区| 国内自拍一区| 欧美日韩亚洲一区二区三区在线观看 | 亚洲欧洲精品一区二区三区| 久久婷婷国产综合国色天香| 日韩欧美国产综合| 欧美一区二区三区的| 欧美色综合久久| 老牛影视一区二区三区| 裸体丰满少妇做受久久99精品| 国产日韩欧美三区| 国产伦精品一区二区| 在线综合亚洲| 亚洲一区中文| 免费h精品视频在线播放| 国产精品腿扒开做爽爽爽挤奶网站| 一区在线视频观看| 一区二区精品国产| 国产三级精品在线不卡| 日本不卡视频一二三区| 免费在线观看一区二区| 激情深爱一区二区| 国产欧美精品日韩区二区麻豆天美| 伊人久久亚洲美女图片| 美女在线观看视频一区二区| 国产欧美一区二区精品性| 色老汉av一区二区三区| 欧美日韩精品免费观看| 麻豆国产一区二区| 一区二区在线观看视频| 欧美xxxxx牲另类人与| 久久精品官网| 黄色国产精品一区二区三区| 毛片av一区二区| 亚洲色图在线视频| 日韩精品在线网站| 亚洲一区二区三区四区五区午夜| 国产成人精品www牛牛影视| 日本不卡一区二区三区| 国产精品乱码久久久久久| 欧美日韩一区精品| 一区二区日本视频| 94-欧美-setu| 国产91精品精华液一区二区三区 | 欧美日韩四区| 国产成人精品免费在线|