亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

php源碼之區分平臺MVC結構的介紹

2020-03-22 18:02:29
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了關于php源碼區分平臺MVC結構的介紹,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

主要:

模型單例工廠

目錄結構優化

區分平臺(前臺,后臺....)

--------------:--------------------------------------├─App│ ├─Model 模型│ │ └─UserModel.html' target='_blank'>class.php 用戶模型類 │ ├─View 視圖│ │ ├─Back后臺│ │ │ └─Index│ │ │ └─index.html 后臺首頁面│ │ └─Home前臺│ │ └─User 用戶視圖目錄│ │ └─login.html 登錄表單頁面│ ├─Controller 控制器│ │ ├─Back后臺│ │ │ └─IndexController.class.php 后臺首頁控制器│ │ └─Home前臺│ │ └─UserController.class.php 用戶控制器├─Public 靜態公共文件(js,css,images)│ ├─Plugins 插件│ │ └─layui 前端框架插件│ ├─Back后臺│ │ ├─js/ js文件│ │ ├─css/ css樣式文件│ │ └─image img圖片 │ └─Home前臺│ ├─js/ js文件│ ├─css/ css樣式文件│ └─image img圖片 ├─Frame 公共使用的類│ ├─BaseModel.class.php 數據庫連接類│ ├─BaseController.class.php 控制器公共操作(設置編碼,信息跳轉)│ ├─FactoryModel.class.php 模型工廠類│ └─MySQLDB.class.php 數據庫操作工具類└─index.php 入口文件----------------------------------------------------------------

下載查看該項目源碼: http://gitee.com/NewbiesYang/young_blog

模型單例工廠

準備: 創建分支

1 $ git checkout master2 $ git checkout -b folder-model-app 

說明:

1)程序中3行 。。。 表示省略的代碼。從前面或源碼中可查看

2) 【XXX/XXX】表示項目文件相對路徑

思路:

問題: 項目中模型操作數據表,一個動作可能就要操作一次數據庫,一次請求多個動作,每個動作都需要去實例化對應模型

解決想法: 創建一個模型類單例工廠
實現: 創建單例的模型類 FactoryModel.class.php
屬性$model=array(); 存儲模型類實例
方法: M($cmodelName, array $conf=null) 實例化模型類
使用: 控制器中使用模型類實例:$model=FactoryModel::M( 模型名稱 )

代碼實現

1) 創建模型單例工廠 【Frame/FactoryModel.class.php】

 1 ?php  2 /**  3 * 單例模型工廠類  4 * User: young  5 */  7 class FactoryModel  8 {  9 protected static $model = array(); //存儲模型類實例 11 /** 12 * 構造方法 13 */ 14 protected function __construct() 15 { 16 } 18 /* 19 * 傳遞一個模型類的類名,就返回該類的一個單例實例對象 20 *@param string $modelName 模型類的類名 21 *@param array $conf 數據庫配置信息 22 *@return object 傳入模型類的實例(單例) 23 */ 24 public static function M($modelName, array $conf=null) 25 { 26 $modelName = $modelName. Model  27 if(empty(static::$model[$modelName]) || !(static::$model[$modelName] instanceof $modelName)){ 28 static::$model[$modelName] = new $modelName($conf); 29 } 30 return static::$model[$modelName]; 31 } 32 }

2) 引入該類文件 【index.php】

 1 ?php  2 /**  3 * 入口文件  4 */  5 require_once Frame/Db.class.php //數據庫操作類  6 require_once Frame/BaseModel.class.php //基礎模型類  7 require_once( Model/UserModel.class.php  9 require_once Frame/FactoryModel.class.php //模型工廠類 10 。。。 11 。。。 12 。。。

入口文件引入工廠模型類

3) 應用: 控制器中使用,如用戶控制器UserController中 登錄操作【Controller/UserController.class.php】

 1 ?php  2 /**  3 * UserController.class.php 用戶控制器  4 */  6 class UserController extends BaseController{  7 。。。  8 。。。  9 。。。 11 /** 12 * 登錄操作: 校驗登錄信息 13 */ 14 public function dlogin() 15 { 16 //接收登錄信息17 $data = array(); 18 $data[ username ] = trim($_POST[ username  19 $data[ pwd ] = trim($_POST[ pwd  21 //實例化模型,調用模型方法 22 //$model = new UserModel(); 23 //$result = $model- checkLoginInfo($data); 24 //替換上面兩行 25 $result = FactoryModel::M( User )- checkLoginInfo($data); 27 //跳轉提示 28 if($result){ 29 $this- msg( 登錄成功! , ?a=index ,3); 30 } else { 31 $this- msg( 用戶名或密碼不正確??!  32 } 33 } 34 }

4) 測試程序運行,http://www.test.com/blog/index.php 登錄測試結果與前面一致。暫時先提交代碼

1 git add -2 git commit -m 完成模型工廠類 
目錄結構優化 思路

多個平臺(模塊):前后,后臺
MVC結構分平臺
C: Controllers/Home Controllers/Admin .....
V: Views/Home Views/Admin .....
M: 操作數據表一般模塊共用
公共資源目錄Public: Public/Home Public/Admin .....
目錄結構變化,所有載入類,視圖的路徑做相應變化

代碼實現

1)操作步驟

1)目錄構建: step 1: 根目錄下創建目錄App, 將Model目錄,View目錄,Controller目錄放大App目錄下 既根目錄只有: App/ Public/ Frame/ index.phpstep 2: 在Controller目錄中,創建Back目錄和Home目錄。將UserController控制器類文件放入Home目錄中step 3: 在View目錄中,創建Back目錄和Home目錄。將login.html文件放入Home目錄中step 4: 在Public目錄中,創建Back目錄,Home目錄,Plugins目錄。將js,images,css目錄放入Home目錄中,公共插件放入對應的Plugins目錄中2)文件引入修改:step 5: index.php入口文件對UserCotroller類的引入路徑修改step 6:UserController類中對視圖login.html的include路徑的修改step 7: 視圖login.html中對css和js路徑的引入

操作步驟思路

2) 具體代碼修改操作

入口文件引入類路徑修改【index.php】 主要是用戶模型類和用戶控制器類路徑引入修改

 1 ?php  2 /**  3 * 入口文件  4 */  5 require_once Frame/Db.class.php //數據庫操作類  6 require_once Frame/BaseModel.class.php //基礎模型類  7 require_once App/Model/UserModel.class.php  9 require_once Frame/FactoryModel.class.php //模型工廠類 11 require_once Frame/BaseController.class.php //基礎控制器類 12 require_once App/Controller/Home/UserController.class.php  14 //實例化控制器 15 $userCtr = new UserController(); 17 $a = !empty($_GET[ a ]) ? $_GET[ a ] : login  19 $userCtr - $a();

入口文件引入類的修改

用戶控制器類對登錄表單視圖路徑引入的修改 【App/Controller/Home/UserController.class.php】

 1 ?php  2 /**  3 * UserController.class.php 用戶控制器  4 */  6 class UserController extends BaseController{  7 /**  8 * 展示登錄界面  9 * @access public10 */ 11 public function login() 12 { 13 include App/View/Home/User/login.html  14 } 15 。。。 16 。。。 17 。。。

用戶控制器展示登錄界面修改

登錄表單視圖 【App/View/Home/User/login.html】 對靜態資源路徑的修改

 1 !DOCTYPE html  2 html lang= zh-CN  3 head  4 meta charset= UTF-8  5 title 登錄 /title  6 link rel= stylesheet type= text/css href= public/plugins/layui/css/layui.css  7 link rel= stylesheet type= text/css href= public/Home/css/style.css  8 /head  9 。。。 10 。。。 11 。。。 12 script type= text/javascript src= public/plugins/layui/layui.js /script  13 script  14 layui.use( form , function(){ 15 var form = layui.form; 16 }); 17 /script  18 /body  19 /html 

登錄表單視圖

效果及提交代碼

提交保存代碼

1 git add -A2 git commit -m 目錄結構優化 
區分平臺(前臺,后臺....) 思路

實現根據平臺的不同進行不同的操作

用戶點擊頁面請求,隨著url發送3個參數: p=平臺 c=控制器 a=動作
入口文件接收get數據就可以知道: 平臺, 控制器, 動作

代碼實現

1) 操作步驟:

1)入口文件平臺區分: step 1: 入口-登錄頁面提交的action= ?p=Home c=User a=dlogin  step 2: 入口文件index.php 接收$_GET step 3: 登錄判斷成功跳轉地址: $this- msg( 登錄成功! , ?p=Admin c=Index a=index ,3);2) 后臺首頁: step 1: 靜態css,js,img文件放置 Public/Admin/ step 2: 創建后臺首頁控制器類, index() 載入后臺首頁視圖文件 step 3: View/Admin/Index/index.html 修正css等靜態文件路

操作步驟思路

2)登錄表單提交action=“?p=Home c=User a=dlogin” 【App/View/Home/User/login.html】

 1 !DOCTYPE html  2 html lang= zh-CN  3 head  4 meta charset= UTF-8  5 title 登錄 /title  6 link rel= stylesheet type= text/css href= public/plugins/layui/css/layui.css  7 link rel= stylesheet type= text/css href= public/Home/css/style.css  8 /head  9 body  10 p >

登錄表單form提交action修改

3) 入口文件區分平臺 【index.php】

 ?php * 入口文件  $p = !empty($_GET[ p ]) ? $_GET[ p ] : Home //平臺 $c = !empty($_GET[ c ]) ? $_GET[ c ] : User //控制器 $a = !empty($_GET[ a ]) ? $_GET[ a ] : login //動作 require_once Frame/Db.class.php //數據庫操作類 require_once Frame/BaseModel.class.php //基礎模型類 require_once App/Model/UserModel.class.php  require_once Frame/FactoryModel.class.php //模型工廠類 require_once Frame/BaseController.class.php //基礎控制器類 require_once App/Controller/ .$p. / .$c. Controller.class.php  $ctr = $c. Controller //實例化控制器 $userCtr = new $ctr();$userCtr - $a();

用戶控制器登錄操作,登錄成功跳轉到后臺首頁 【App/Controller/Home/UserController.class.php】

 1 ?php  2 /**  3 * UserController.class.php 用戶控制器  4 */  6 class UserController extends BaseController{  7 。。。  8 。。。  9 。。。 10 /** 11 * 登錄操作: 校驗登錄信息 12 */ 13 public function dlogin() 14 { 15 //接收登錄信息 16 $data = array(); 17 $data[ username ] = trim($_POST[ username 18 $data[ pwd ] = trim($_POST[ pwd  20 //實例化模型,調用模型方法 21 $result = FactoryModel::M( User )- checkLoginInfo($data); 23 //跳轉提示 24 if($result){25 $this- msg( 登錄成功! , ?p=Admin c=Index a=index ,3);26 } else { 27 $this- msg( 用戶名或密碼不正確?。? 28 } 29 } 30 }

登錄操作成功后跳轉路徑修改

測試

1)模板準備:

準備后臺視圖模板程序。可以自己寫前端視圖模板程序,也可以到網上下載別人寫好的前端模板,如到 模板之家 選擇所需求的 前臺,后臺模板

尋找模板: www.mycodes.net

2) 將后臺模板視圖的靜態資源文件(如 js, css,image)拷貝到 【Public/admin/】目錄下

3) 創建后臺首頁控制器 【App/Controller/Admin/IndexController.class.php】

 1 ?php  2 /**  3 * IndexController控制器類  4 * 后臺相關操作  5 * User: young  6 */  8 class IndexController extends BaseController  10 //展示后臺首頁 11 public function index() 12 { 13 include App/View/Admin/Index/index.html  14 } 15 }

4) 創建后臺首頁視圖 【App/View/Admin/Index/index.html】

 1 !doctype html  2 html  3 head  4 meta charset= UTF-8  5 title 后臺管理 /title  6 link rel= stylesheet type= text/css href= ./Public/Admin/css/common.css /  7 link rel= stylesheet type= text/css href= ./Public/Admin/css/main.css /  8 script type= text/javascript src= ./Public/Admin/js/libs/modernizr.min.js /script  9 script type= text/javascript src= ./Public//home/js/jquery1.42.min.js /script  10 /head  11 body  14 p >

后臺首頁視圖

效果及提交代碼

代碼提交,推送

1 $ git add -A2 $ git commit -m 區分平臺,實現后臺首頁 3 $ git checkout master4 $ git merge folder-model-app 5 $ git push origin master

小結: 根據平臺進一步優化目錄結構,制作模型的單例工廠,實現后臺首頁

提出問題

1. 項目中可以看到 include或require的文件路徑很長,容易出錯,也不便于使用 == 如何更加簡單引入且不易出錯

2. 寫一個類,就要到入口文件引入一次, 比較麻煩 == 如何實現自動加載類

3. 隨著類的引入增加,入口文件代碼量會越來越大 == 如何 封裝,簡化入口文件

4. 現在項目中任何一個目錄,都可以隨意訪問 == 如何加強安全訪問,限制目錄的訪問

下一步:常量使用,自動加載類實現,入口封裝,限制目錄訪問

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !

相關推薦:

php源碼之搭建站點實現登錄頁面的方法

php源碼之實現單入口MVC結構的方法

以上就是php源碼之區分平臺MVC結構的介紹的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品第一页在线| 91免费的视频在线播放| 国产欧美精品一区二区三区介绍| 伊人久久久久久久久久久久久| 中文字幕av一区二区三区谷原希美| 91精品视频在线播放| 欧美另类xxx| 色无极亚洲影院| 亚洲成人精品av| 欧美亚洲激情在线| 成人国产亚洲精品a区天堂华泰| 亚洲天堂网在线观看| 日本19禁啪啪免费观看www| 亚洲一区二区三区777| 国产精品视频免费在线| 日韩毛片中文字幕| 26uuu亚洲伊人春色| 亚洲xxxx3d| 高清一区二区三区日本久| 2019最新中文字幕| 中文字幕日韩有码| 国产精品女人久久久久久| 国产午夜精品免费一区二区三区| www.日韩系列| 中文字幕亚洲自拍| 91久久夜色精品国产网站| 欧美午夜精品久久久久久久| 国产亚洲精品成人av久久ww| 日韩亚洲综合在线| 日韩中文字幕亚洲| 亚洲欧美另类在线观看| 77777少妇光屁股久久一区| 久久69精品久久久久久久电影好| 欧美日韩一区二区免费在线观看| 青青草99啪国产免费| 在线色欧美三级视频| 一区二区三区四区在线观看视频| 欧美乱人伦中文字幕在线| 97香蕉久久夜色精品国产| 成人在线一区二区| 一区二区亚洲欧洲国产日韩| 91免费精品国偷自产在线| 国产视频一区在线| 91亚洲永久免费精品| 91精品国产色综合| 欧美另类第一页| 怡红院精品视频| 精品国内亚洲在观看18黄| 日韩精品一二三四区| 91精品国产高清自在线| 亚洲电影免费观看高清完整版在线| 日韩亚洲精品电影| 欧美在线免费观看| 欧美日韩国产丝袜美女| 久久视频中文字幕| 久久激情五月丁香伊人| 午夜精品一区二区三区在线视| 亚洲sss综合天堂久久| 国产精品久久久久久久一区探花| 久久久久久久久久久久久久久久久久av| 欧美中在线观看| 国产视频亚洲视频| 97福利一区二区| 欧美激情小视频| 国产成人在线一区二区| 日韩精品视频免费在线观看| 欧美极品少妇xxxxx| 亚洲第一av在线| 超碰精品一区二区三区乱码| 亚洲精品福利在线| 日韩成人高清在线| 成人免费网站在线看| www.欧美精品| 国产欧美日韩精品在线观看| 欧美激情欧美激情| 亚洲第一二三四五区| 日本一区二区在线免费播放| 亚洲电影免费观看高清完整版在线| 日韩av在线免费| 欧美日韩激情网| 深夜福利国产精品| 欧美日韩国产一区在线| 国产一区二中文字幕在线看| 欧美xxxx14xxxxx性爽| 成人精品在线观看| 97国产精品久久| 日产精品久久久一区二区福利| 青草青草久热精品视频在线观看| 亚洲天堂日韩电影| 国产成人高清激情视频在线观看| 最新91在线视频| 秋霞午夜一区二区| 按摩亚洲人久久| 亚洲国产第一页| 国产精品日韩在线一区| 日本欧美中文字幕| 91牛牛免费视频| 久久国产精品久久久久久久久久| 国产精品久在线观看| 亚洲片国产一区一级在线观看| 在线精品91av| 国产午夜精品一区二区三区| 中文字幕精品国产| 国产日韩在线免费| 国产精品久久久久久久久免费| 久久成人精品电影| 亚洲**2019国产| 18性欧美xxxⅹ性满足| 人九九综合九九宗合| 国产日韩精品在线| 日韩精品久久久久久久玫瑰园| 久久精品国产欧美激情| 亚洲黄页视频免费观看| 精品无码久久久久久国产| 国产精品久久久亚洲| 一本色道久久88精品综合| 国产视频丨精品|在线观看| 久热精品在线视频| 国产区精品在线观看| 久久久久久伊人| 久久久噜久噜久久综合| 欧美一区二区三区……| 日韩免费观看高清| 亚洲欧美综合v| 久热国产精品视频| 青青久久aⅴ北条麻妃| 91wwwcom在线观看| 亚洲成人精品视频| 高清在线视频日韩欧美| 国产91热爆ts人妖在线| 中文字幕日韩精品在线观看| 亚洲欧洲一区二区三区在线观看| 国产成人精品在线| 中文字幕av一区| 2020国产精品视频| 国产精品成熟老女人| 国产精品香蕉在线观看| 尤物精品国产第一福利三区| 成人免费高清完整版在线观看| 亚洲欧美精品伊人久久| 久久综合国产精品台湾中文娱乐网| 欧美日韩国产色视频| 日韩久久精品成人| 欧美视频免费在线观看| 国产视频亚洲精品| 一区国产精品视频| 这里只有视频精品| 精品视频偷偷看在线观看| 亚洲色图第一页| 97超碰蝌蚪网人人做人人爽| 欧美激情按摩在线| 亚洲美女av黄| 97精品国产aⅴ7777| 日日狠狠久久偷偷四色综合免费| 911国产网站尤物在线观看| 国产精品狼人色视频一区| 国产精品偷伦免费视频观看的| 日韩av在线电影网| 国产亚洲精品一区二区| 91亚洲一区精品| 欧美日韩国产成人在线| 欧美黄色小视频| 亚洲性视频网站| 国产精品美女久久久免费|