加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

PHP仿tp实现mvc框架基本设计思路与实现方法分析

发布时间:2021-05-28 13:04:54 所属栏目:编程 来源:网络整理
导读:本篇章节讲授PHP仿tp实现mvc框架根基计划思绪与实现要领。供各人参考研究详细如下: 仿tp mvc根基计划与简质朴现 一:文件加载知识 变量 常量 函数 类文件加载的函数可能行使定名空间: require(); require_once(); include(); include_once(); 常
副问题[/!--empirenews.page--]

本篇章节讲授PHP仿tp实现mvc框架根基计划思绪与实现要领。分享给各人供各人参考,详细如下:

仿tp mvc根基计划与简质朴现

一:文件加载知识

变量 常量 函数 类 文件加载的函数可能行使定名空间:require(); require_once(); include(); include_once(); 常量:define("DEFINE",""); const constant = "value"; 函数:function fun(){} // global 行使全局变量 局部变量不被外部挪用。 类:

a; // 输出属性. } public function __construct(){ // 结构要领,实例化后自动执行, echo $this->bb(); // 挪用要领。 } public function bb(){ echo "我是bb"; } } $a = new A; $a->aa(); class B extends A{ // 担任 A,类A是类B的父级。担任public的, } $b = new B; $b->aa(); // 可以输出类A内里的属性。

工场模式参阅:

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 参数来办理

譬喻:

h为前靠山,v为节制器,c为模板。

array["$key"] = $val; }else{ $this->array["$key"] = compact($val); } } public function display($tpl = ''){ // 模板为空自动加载。 $this->assign($this->key,$this->val); extract($this->array); // 假如模板为空就在这里按照get参数添加可能通过 $_SERVER['PATH_INFO']; 转换获得。(下面讲授) if(file_exists($tpl)){ //模板存在就加载文件。 include $tpl; } } } //担任总model。这个model名字和节制器model的名字是一样的。担任要领同Controller,总model必需必要加上一个return。数据处理赏罚的indexmodel可以加return,也可以不加。 class IndexModel extends Model{ public function index(){ // 数据处理赏罚。 // 必要返回数据就加上return。 } } class IndexController extends Controller{ // 担任 public function index(){ $m = Model("index"); echo '实例化后的index要领
'; $this->assign('m',$m); // 分派数据。 $this->display('index.html'); // 模板 } }

mvc固然实现可是不足人道化,由于每次都要加上get参数,变得很冗长,办理的要害在于$_SERVER['PATH_INFO'];

用这个替代掉h m v三个参数。

1. 当输入url为:

2. U 要领的实现。从头改写$_SERVER['PATH_INFO'] 参数,改变为一个数据。array( 'home','Index','index');

每次进入进口文件index.php都把他的PHP_INFO参数转换为数组,在节制器可能其他的处所只要挪用这个参数就行了。

3. url重写,去掉 index.php

打开apache设置文件重写模块,

根下插手的改写文件 .htaccess

内容:

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

在赏识器输入url: 200 重写状态ok。

发明 $_SERVER['REDIRECT_URL'];$_SERVER['PATH_INFO']; 参数沟通。以是参数后头就可以去掉index.php这安详的题目。

4. 模板替代(思绪)

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读