成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > PHP仿tp實現(xiàn)mvc框架基本設(shè)計思路與實現(xiàn)方法分析

PHP仿tp實現(xiàn)mvc框架基本設(shè)計思路與實現(xiàn)方法分析

熱門標(biāo)簽:房產(chǎn)中介用的是什么外呼系統(tǒng) 地圖標(biāo)注專員怎么樣 上海做外呼線路的通信公司 長沙做地圖標(biāo)注公司 福建銀行智能外呼系統(tǒng)價格 電話機器人銷售主要負責(zé)什么 四川保險智能外呼系統(tǒng)供應(yīng)商 遼寧ai電銷機器人價格 寧波外呼營銷系統(tǒng)

本文實例講述了PHP仿tp實現(xiàn)mvc框架基本設(shè)計思路與實現(xiàn)方法。分享給大家供大家參考,具體如下:

仿tp mvc基本設(shè)計與簡單實現(xiàn)

一:文件加載常識

變量 常量 函數(shù) 類
文件加載的函數(shù)或者使用命名空間:require();   require_once();   include();   include_once();
常量:define("DEFINE","");   const constant = "value";
函數(shù):function fun(){}  // global 使用全局變量    局部變量不被外部調(diào)用。
類:

?php
class A{
  public $a = 10;
  public function aa(){  // 不能使用一個a是因為,new A 之后 方法a會被自動執(zhí)行,所以方法名不可以和類名沖突。
    echo $this->a; // 輸出屬性.
  }
  public function __construct(){ // 構(gòu)造方法,實例化后自動執(zhí)行,
    echo $this->bb(); // 調(diào)用方法。
  }
  public function bb(){
    echo "我是bb";
  }
}
$a = new A;
$a->aa();
class B extends A{ // 繼承 A ,類A是類B的父級。繼承public的,
}
$b = new B;
$b->aa(); // 可以輸出類A里面的屬性。

工廠模式參閱:https://www.jb51.net/article/140658.htm

//-----------------------------工廠模式-------------------------//
class A{
  public $class;   // public $class = $_GET['c']; //類名
  public $method; // public $method = $_GET['m']; //方法
  public function __construct($class,$method){
    // 或者通過 $_SERVER['PATH_INFO']; 轉(zhuǎn)換得到類名或者方法名(下面講解)。
    $this->class = ucfirst(strtolower($class)).'Controller'; //對類名進行安全處理,并加上控制器后綴
    $this->method = strtolower($method);   //對方法名進行安全處理
    $this->work($this->class,$this->method);
  }
  public function work($class,$method){
    // 把文件命名成 (類名.class.php的形式),就可以通過類名找到文件。
    //include '文件名(文件在別的地方)';    #例如 include './index.php'; 引入文件然后實例化類。
    $c = new $class;  //實例化類
    $c->$method();  //訪問類的方法
  }
}

至此我們可以通過url的 $_GET 參數(shù)來解決

例如:http://mvc.com/index.php?h=homev=Indexc=index.html

h為前后臺,v為控制器,c為模板。

$v = $_GET['v'];
$c = rtrim($_GET['c'],".html");
new A($v,$c); // 根據(jù)繼承關(guān)系再次加載文件。
// extract($arr);  //extract 的作用:從數(shù)組中將變量導(dǎo)入到當(dāng)前的符號表,鍵做變量,值做值!
// compact(); // — 建立一個數(shù)組,包括變量名和它們的值
// assign display 實現(xiàn)參閱:https://www.jb51.net/article/140661.htm

class Controller{
  public $array;
  public $key;
  public $val;
  public function assign($key,$val){
    if(array($val)){
      $this->array["$key"] = $val;
    }else{
      $this->array["$key"] = compact($val);
    }
  }
  public function display($tpl = ''){ // 模板為空自動加載。
    $this->assign($this->key,$this->val);
    extract($this->array);
    // 如果模板為空就在這里根據(jù)get參數(shù)添加或者通過 $_SERVER['PATH_INFO']; 轉(zhuǎn)換得到。(下面講解)
    if(file_exists($tpl)){ //模板存在就加載文件。
      include $tpl;
    }
  }
}
//繼承總model。這個model名字和控制器model的名字是一樣的。繼承方法同Controller,總model必須需要加上一個return。數(shù)據(jù)處理的indexmodel可以加return,也可以不加。
class IndexModel extends Model{
  public function index(){
    // 數(shù)據(jù)處理。
    // 需要返回數(shù)據(jù)就加上return。
  }
}
class IndexController extends Controller{ // 繼承
  public function index(){
    $m = Model("index");
    echo '實例化后的index方法br>';
    $this->assign('m',$m); // 分配數(shù)據(jù)。
    $this->display('index.html'); // 模板
  }
}

mvc雖然實現(xiàn)但是不夠人性化,因為每次都要加上get參數(shù),變得很冗長,解決的關(guān)鍵在于$_SERVER['PATH_INFO'];

用這個替換掉h m v三個參數(shù)。

1. 當(dāng)輸入url為:http://mvc.com/index.php/home/index/index.html
    這種情況下  index.php 斜線后面的apache會自動認(rèn)為是一個路徑。
    $_SERVER['PATH_INFO'] =  /home/index/index.html
    第1個斜線 /home        前后臺
    第2個斜線 /index        控制器
    第3個斜線 /index.html  模板文件
    如果后面加有參數(shù)例如:?a=18b=38   他不會被加到$_SERVER['PATH_INFO']里面。$_POST 或者 $_GET 也不會加入$_SERVER['PATH_INFO']里面的內(nèi)容,這樣就可以讓控制參數(shù)和數(shù)據(jù)的參數(shù)互不沖突。

2. U 方法的實現(xiàn)。重新改寫$_SERVER['PATH_INFO'] 參數(shù),改變?yōu)橐粋€數(shù)據(jù)。array( 'home', 'Index', 'index');

每次進入入口文件index.php都把他的PHP_INFO參數(shù)轉(zhuǎn)換為數(shù)組,在控制器或者其他的地方只要調(diào)用這個參數(shù)就行了。

// 這里如果做了大小寫的轉(zhuǎn)換,總控制器里面就不用了。
function bca(){
  $arr = explode('/',ltrim($_SERVER['PATH_INFO'],'/'));
  if(count($arr) == 3){
    $arr[0] = strtolower($arr[0]);
    $arr[1] = ucfirst(strtolower($arr[1]));
    // 判斷后綴是不是 .html
    if(substr($arr[2],-5,strlen($arr[2])) == '.html'){
      $a = explode('.',$arr['2']);
      $arr[2] = strtolower($a[0]);
    }else{
      $arr[2] = strtolower($arr[2]);
    }
    $_SERVER['PATH_INFO'] = $arr;
  }
}
// url方法做控制器或前后臺的跳轉(zhuǎn)。第三個參數(shù)是輸出還是return。默認(rèn)是直接輸出。
function U($string = '',$method = '',$bool = true){ // true 是直接輸出或者返回,
  // 獲取系統(tǒng)變量。
  $path_info = $_SERVER['PATH_INFO'];
  $script_name = $_SERVER['SCRIPT_NAME'];
  // 判斷中間有沒有 / 以確定參數(shù)個數(shù)。
  if(strpos($string,'/')){
    $arr = explode('/',$string);
    if(count($arr) == 2){  // 兩個參數(shù)的情況。
      $arr[0] = ucfirst(strtolower($arr[0]));
      $arr[1] = strtolower($arr[1]);
      $url = "/{$path_info[0]}/{$arr[0]}/{$arr[1]}.html";
    }else if(count($arr) == 3){ // 三個參數(shù)的情況。
      $arr[0] = strtolower($arr[0]);
      $arr[1] = ucfirst(strtolower($arr[1]));
      $arr[2] = strtolower($arr[2]);
      $url = "/{$arr[0]}/{$arr[1]}/{$arr[2]}.html";
    }
  }else{
    $arr = strtolower($string); // 一個參數(shù)的情況。
    $url = "/{$path_info[0]}/{$path_info[1]}/{$arr}.html";
  }
  // url 路徑的拼接。
  if($method != ''){
    $u = $script_name.$url.'?'.$method;
    if($bool == true){     echo $u;    }else{     return $u;   }
  }else{
    $u = $script_name.$url;
    if($bool == true){     echo $u;    }else{     return $u;   }
  }
}

3. url重寫,去掉 index.php

打開apache配置文件重寫模塊,LoadModule rewrite_module modules/mod_rewrite.so

根下加入的改寫文件  .htaccess

內(nèi)容:

IfModule mod_rewrite.c>
 Options +FollowSymlinks
 RewriteEngine On
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
/IfModule>

在瀏覽器輸入url:http://mvc.com/home/index/index.html?a=19b=38
    [REDIRECT_STATUS] => 200  重寫狀態(tài)ok。

發(fā)現(xiàn) $_SERVER['REDIRECT_URL'];$_SERVER['PATH_INFO']; 參數(shù)相同。所以參數(shù)后面就可以去掉index.php這安全的問題。

4. 模板替換(思路)

我們會發(fā)現(xiàn)有一個我們書寫的模板,里面有 {$arr}  include file="" /> 等,我們把模板文件讀取后通過正則還有字符串把他轉(zhuǎn)換成正常的php文件。對文件名加密后放到替換后的文件夾下,每次url訪問的時候查看是否有緩存文件,判斷最后修改時間等驗證,

5. 數(shù)據(jù)緩存(思路)

json_encode() json_decode() file_get_contents() file_put_contents(); unserialize();  serialize(); 等存文文件里面或者memcache redis 等存儲。

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》

希望本文所述對大家PHP程序設(shè)計有所幫助。

您可能感興趣的文章:
  • PHP從零開始打造自己的MVC框架之類的自動加載實現(xiàn)方法詳解
  • PHP從零開始打造自己的MVC框架之入口文件實現(xiàn)方法詳解
  • php打造屬于自己的MVC框架
  • PHP的MVC模式實現(xiàn)原理分析(一相簡單的MVC框架范例)
  • php實現(xiàn)最簡單的MVC框架實例教程
  • php實現(xiàn)簡單的MVC框架實例
  • 搭建自己的PHP MVC框架詳解
  • PHP簡單的MVC框架實現(xiàn)方法
  • PHP MVC框架路由學(xué)習(xí)筆記
  • PHP URL路由類實例
  • php編寫一個簡單的路由類
  • PHP從零開始打造自己的MVC框架之路由類實現(xiàn)方法分析

標(biāo)簽:佛山 延安 常德 宿遷 工商登記 宜春 深圳 澳門

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP仿tp實現(xiàn)mvc框架基本設(shè)計思路與實現(xiàn)方法分析》,本文關(guān)鍵詞  PHP,仿,實現(xiàn),mvc,框架,基本,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP仿tp實現(xiàn)mvc框架基本設(shè)計思路與實現(xiàn)方法分析》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP仿tp實現(xiàn)mvc框架基本設(shè)計思路與實現(xiàn)方法分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美日本中文| 亚洲成av人片在线观看香蕉| 亚洲成人在线视频网站| 尤物视频网址| www视频在线看| 五级黄高潮片90分钟视频| 亚洲视频一区在线播放| 美女在线一区二区| 91国在线精品国内播放| 国产精品蜜臀在线观看| 国产精品免费视频二三区| 久久久综合av| 精品69视频一区二区三区| 亚洲天堂国产视频| 国产精品露脸自拍| 欧美bbbbbbbbbbbb精品| 在线视频1卡二卡三卡| 日韩美女一级片| 日本在线播放一二三区| 欧美精品久久久久久久久| 欧美美女网站色| 国产一区二区在线| 国产精品久免费的黄网站| 国产一区二区在线观看视频| 欧美日韩hd| 欧美日本韩国国产| 黄色国产在线播放| 精品国产视频在线| 国产中文字幕91| 中文字幕一区二区5566日韩| 丰满亚洲少妇av| 91视频免费进入| 欧美美女激情18p| 欧美日韩中文字幕视频| 影音先锋可以看的网站| yellow网站在线观看| 成人羞羞国产免费网站| 成人在线免费观看视频| 日本性高潮视频| 亚洲综合日韩中文字幕v在线| 国产一区在线视频观看| 动漫美女无遮挡免费| av免费在线一区二区三区| 成人av在线一区二区三区| 欧美猛少妇色xxxxx| 在线成人高清不卡| 精品夜色国产国偷在线| 欧美一区二区三区在线电影| 国产精品扒开做爽爽爽的视频| 国产日韩三级在线| 国产精品啪啪啪视频| 成人黄色在线网站| 91精品人妻一区二区三区蜜桃2| 亚洲一区色图| 国产剧情在线视频| 成人自拍视频在线| 密臀av在线播放| 91丨porny丨九色| 日韩欧美国产精品一区| 蜜桃免费网站一区二区三区| 亚洲国产精品人人做人人爽| 国产资源精品在线观看| 九九九视频在线观看| 777奇米888色狠狠俺也去| 丁香色欲久久久久久综合网| 懂色av一区二区三区四区五区| 免费看男男www网站入口在线| 国产精品成人aaaa在线| 亚州av影院| 国产精品一区二区久激情瑜伽| 99视频免费观看蜜桃视频| 成人激情春色网| 亚洲国产成人精品久久久国产成人一区| 国产精品一国产精品最新章节| 91中文字幕在线播放| 国产综合久久| 欧美极品另类videosde| 欧美日韩一级二级| 日韩欧美色综合网站| av在线免费观看国产| 国产极品美女高潮无套久久久| 图片区亚洲欧美小说区| 一个人看的www视频免费在线观看| 免费观看的av网站| 欧美激情在线精品一区二区三区| 九色porny蝌蚪视频在线观看| 露出调教综合另类| 欧美一级爆毛片| 亚洲国产sm捆绑调教视频| 欧美激情电影| 亚洲成人99| 国产在线高清理伦片a| 黑人乱码一区二区三区av| 日韩中文字幕高清| 成人亚洲一区二区三区| 国产一区玩具在线观看| 影音先锋中文字幕一区| 亚洲v国产v在线观看| 国产系列在线观看| 国产精品高清在线观看| 国产真实伦在线观看| 欧美高清另类hdvideosexjaⅴ| 肉色超薄丝袜脚交一区二区| 无码 人妻 在线 视频| 国产成人在线一区| 亚洲人成网站999久久久综合| 国产一级二级视频| 在线观看涩涩| 97影院秋霞午夜在线观看| 韩国日本在线视频| 免费a在线观看| 亚洲欧美一区二区三区在线| 一区二区三区四区蜜桃| 神马午夜在线观看| 黄色片免费观看| 熟妇人妻久久中文字幕| 91视频福利网| 日韩二区在线观看| 国产精品自拍视频| 国产成人无码精品久久久久| 国产剧情麻豆剧果冻传媒视频免费| 日本福利一区| 国内精品久久久久久久果冻传媒| 欧美性狂猛xxxxxbbbbb| 国内精品麻豆美女在线播放视频| 午夜精品一区二区三区视频| 亚洲精品成人在线视频| 欧美一区二区视频在线| 亚洲黄色网址在线观看| 自拍偷拍校园春色| 韩国免费在线视频| 亚洲va国产天堂va久久en| 日本少妇毛茸茸高潮| 久久国产影院| 久久精品免费一区二区| 日本激情综合网| 亚洲黄色一区二区三区| 青青草国产精品| 中文字幕在线观看亚洲| 免费男同深夜夜行网站| 久久一留热品黄| 亚洲一区自拍| 欧美网站一区二区| 亚洲日本伦理| 欧美va日韩va| 日本高清好狼色视频| 粉嫩一区二区三区国产精品| 国产香蕉视频在线看| 国产成人精品亚洲线观看| 性生活一级大片| 色噜噜久久综合| 日韩经典av| 图片区小说区亚洲| 国产无遮挡又黄又爽又色视频| 二级片在线观看| 妓院一钑片免看黄大片| 免费在线观看黄色av| 日本一本中文字幕| 中文字幕精品视频| 亚洲综合精品伊人久久| 中文字幕中文在线| 欧美在线观看18| 成年美女黄网站色大片不卡| 五月天福利视频| 午夜精品一区二区三区在线播放| 成人激情开心网| 成人免费网视频| 色婷婷一区二区三区| 96精品视频| 亚洲 自拍 另类小说综合图区| 亚洲色图久久久| 亚洲女人****多毛耸耸8| 日本一二三区在线| 禁果av一区二区三区| 欧美日韩一区二区视频在线| 久在线观看视频| 菠萝菠萝蜜在线观看| 欧美色资源站| 国产美女在线看| 国产伦精品一区二区三区四区视频_| 中文字幕在线中文字幕在线中三区| 91a在线视频| 亚洲av无码国产精品麻豆天美| 免费观看成人在线视频| 精品国产一区久久久| 二区三区中文字幕| 波多野结衣一本| 一本大道色婷婷在线| 午夜精品一区| 亚洲国产精品久久久男人的天堂| 蜜桃传媒一区二区三区| 免费在线观看你懂的| 久热在线观看视频| 91精品免费观看| 日韩成人精品一区二区| 中文字幕va一区二区三区| 国产精品视频| 亚洲综合社区网| av在线理伦电影| 无码人妻少妇色欲av一区二区| 亚洲欧美乱综合| 色一情一乱一伦一区二区三区| 亚洲永久无码7777kkk| 麻豆tv免费在线观看| 亚洲熟妇无码另类久久久| 在线黄色av| 麻豆久久久av免费| 污视频在线观看网站| 日韩一区二区三区电影在线观看| 中文字幕久精品免费视频| 欧美xoxoxo| 综合久久一区二区三区| 超碰在线国产97| 黄网在线观看网址入口| 精品捆绑调教一区二区三区| 91中文在线观看| 久久久精品免费| www高清在线视频日韩欧美| 国产精品无码白浆高潮| 欧美亚洲日本在线观看| 亚洲视频精品一区| 最新国产精品拍自在线播放| 黄页网站免费在线观看| 亚洲精品在线看| 午夜精品久久久久久久蜜桃app| 免费黄色电影在线观看| 午夜影院日韩| 国产乱人伦精品一区二区三区| 国语对白做受69按摩| 中文字幕在线播放| 性欧美videos白嫩| 欧美精品videossex变态| 国产精品男女| 中文精品无码中文字幕无码专区| 成人国产精品免费观看动漫| 成人免费视频视频在线观看免费| 蜜桃久久精品成人无码av| 亚洲一区二区三区三| 麻豆精品久久久久久久99蜜桃| 欧美日韩不卡一区| 成人在线直播| 国产一级影片| 激情综合五月婷婷| 91国产免费视频| 2018av男人天堂| 97热精品视频官网| 波多野结衣久久精品| 人妻在线日韩免费视频| 精品亚洲国产成人av制服丝袜| 大桥未久恸哭の女教师| gogo久久日韩裸体艺术| 免费看污黄网站在线观看| 热久久久久久| 日本sm残虐另类| 香蕉久久国产av一区二区| 国产日产精品久久久久久婷婷| 欧美影视一区二区三区| 午夜免费播放观看在线视频| 欧美电影《轻佻寡妇》| 久久影院亚洲| 午夜久久久久久久久久影院| 99riav一区二区三区| 5858p先锋影音资源网| aaaaaa毛片| 精品午夜一区二区三区在线观看| 精品视频资源站| 亚洲av成人片色在线观看高潮| 一区二区三区在线免费视频| 91在线视频九色| 欧美成人观看免费全部完小说| 中文字幕一区久| 91在线观看免费观看| 91丝袜国产在线播放| 亚洲人午夜射精精品日韩| 欧美一级成年大片在线观看| 欧美一区二区三区视频| 久久国产精品精品国产色婷婷| h视频在线观看免费完整版| 午夜国产小视频| 日韩欧美精品一区二区三区| 日本1区2区3区中文字幕| 美女国产一区二区| 在线视频欧美亚洲| 成人精品一区二区三区四区| 99久久99热这里只有精品| 图片区小说区区亚洲五月| 青青在线观看视频中文字| 黄网在线观看网址入口| 精品国产污污免费网站入口| 精品久久久久久中文字幕一区奶水| 国产精品x453.com| 欧美精品久久久久久久久25p| 欧美色播在线播放| 精品国产乱码久久| 天堂成人娱乐在线视频免费播放网站| 久久久999视频| 天天躁日日躁狠狠躁喷水| 国产精品裸体一区二区三区| 黄色在线免费播放| 欧美日本在线播放| 香蕉视频久久久| 国产精品天天狠天天看| 国产麻豆精品在线| 亚洲图片欧美视频| 日韩中文字幕免费看| 亚洲国内自拍| 精品二区在线观看| 永久看片925tv| 欧美手机在线观看| 国产精品毛片一区二区在线看舒淇| 欧美一区少妇| 波多野结衣的一区二区三区| av免费不卡国产观看| 久久久久久久亚洲| 午夜欧美一区二区三区免费观看| 青春有你2免费观看完整版在线播放高清| 国产一区二区在线免费| 国产96在线 | 亚洲| 香蕉久久aⅴ一区二区三区| 极品人妻一区二区三区| 国产成人麻豆免费观看| 欧美另类暴力丝袜| 最近最新中文字幕在线| 免费黄色av电影| 天天av天天翘天天综合网| 欧美高清电影在线看| 精东粉嫩av免费一区二区三区| 中文字幕永久在线视频|