PHP仿tp实现mvc框架基本设计思路与实现方法分析
副标题[/!--empirenews.page--]
本篇章节讲解PHP仿tp实现mvc框架基本设计思路与实现方法。分享给大家供大家参考,具体如下: 仿tp mvc基本设计与简单实现 一:文件加载常识 变量 常量 函数 类
文件加载的函数或者使用命名空间: 工厂模式参阅: 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参数,变得很冗长,解决的关键在于 用这个替换掉h m v三个参数。 1. 当输入url为: 2. U 方法的实现。重新改写 每次进入入口文件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。 发现 4. 模板替换(思路) (编辑:开发网_郴州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |